[vlc-commits] demux: mp4: fix heap overflow (fix #12283)
vlc/vlc-2.2 | branch: master | Francois Cartegnie | Fri Sep 26 15:56:25 2014 +0200| [115ebace05b4ecb5866f425ef9dfc186fdc94406] | committer: Jean-Baptiste Kempf demux: mp4: fix heap overflow (fix #12283) (cherry picked from commit fd9a60b0178286f603ef9b3057b4ff4ab28d7a22) Signed-off-by: Jean-Baptiste Kempf > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=115ebace05b4ecb5866f425ef9dfc186fdc94406 --- modules/demux/mp4/libmp4.c |4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c index 1d02274..f27d22b 100644 --- a/modules/demux/mp4/libmp4.c +++ b/modules/demux/mp4/libmp4.c @@ -881,7 +881,9 @@ static int MP4_ReadBox_mdhd( stream_t *p_stream, MP4_Box_t *p_box ) MP4_GET4BYTES( p_box->data.p_mdhd->i_timescale ); MP4_GET4BYTES( p_box->data.p_mdhd->i_duration ); } -p_box->data.p_mdhd->i_language_code = i_language = GetWBE( p_peek ); + +MP4_GET2BYTES( i_language ); +p_box->data.p_mdhd->i_language_code = i_language; for( unsigned i = 0; i < 3; i++ ) { p_box->data.p_mdhd->i_language[i] = ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] demux: mp4: add new language conversion tables
vlc/vlc-2.2 | branch: master | Francois Cartegnie | Fri Sep 26 15:57:27 2014 +0200| [42100068b054f248a8e271c826086bfdcc0ed2e1] | committer: Jean-Baptiste Kempf demux: mp4: add new language conversion tables (cherry picked from commit 2a3c52805fe2527c97310c7a7f59178633a1da1e) Signed-off-by: Jean-Baptiste Kempf > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=42100068b054f248a8e271c826086bfdcc0ed2e1 --- modules/demux/Makefile.am |3 +- modules/demux/mp4/languages.h | 91 + modules/demux/mp4/libmp4.c|1 + 3 files changed, 94 insertions(+), 1 deletion(-) diff --git a/modules/demux/Makefile.am b/modules/demux/Makefile.am index 75f5b52..995c6d9 100644 --- a/modules/demux/Makefile.am +++ b/modules/demux/Makefile.am @@ -187,7 +187,8 @@ demux_LTLIBRARIES += $(LTLIBmkv) EXTRA_LTLIBRARIES += libmkv_plugin.la libmp4_plugin_la_SOURCES = demux/mp4/mp4.c demux/mp4/mp4.h \ - demux/mp4/libmp4.c demux/mp4/libmp4.h demux/mp4/id3genres.h + demux/mp4/libmp4.c demux/mp4/libmp4.h \ + demux/mp4/id3genres.h demux/mp4/languages.h libmp4_plugin_la_LIBADD = $(LIBM) libmp4_plugin_la_LDFLAGS = $(AM_LDFLAGS) if HAVE_ZLIB diff --git a/modules/demux/mp4/languages.h b/modules/demux/mp4/languages.h new file mode 100644 index 000..de7b04a --- /dev/null +++ b/modules/demux/mp4/languages.h @@ -0,0 +1,91 @@ +/* + * languages.h: Quicktime language codes and ISO-639-2/T conversion + * + * Copyright (C) 2014 VLC authors and VideoLAN + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + */ +#ifndef _VLC_MP4_LANGUAGES_H +#define _VLC_MP4_LANGUAGES_H 1 + +static bool decodeQtLanguageCode( uint16_t i_language_code, char *psz_iso, + bool *b_mactables ) +{ +static const char * psz_qt_to_iso639_2T_lower = +"eng""fra""deu""ita""nld" +"swe""spa""dan""por""nor" /* 5-9 */ +"heb""jpn""ara""fin""gre" +"isl""mlt""tur""hrv""zho" /* 15-19 */ +"urd""hin""tha""kor""lit" +"pol""hun""est""lav""sme" /* 25-29 */ +"fao""fas""rus""zho""nld" /* nld==flemish */ +"gle""sqi""ron""ces""slk" /* 35-39 */ +"slv""yid""srp""mkd""bul" +"ukr""bel""uzb""kaz""aze" /* 45-49 */ +"aze""hye""kat""mol""kir" +"tgk""tuk""mon""mon""pus" /* 55-59 */ +"kur""kas""snd""bod""nep" +"san""mar""ben""asm""guj" /* 65-69 */ +"pan""ori""mal""kan""tam" +"tel""sin""mya""khm""lao" /* 75-79 */ +"vie""ind""tgl""msa""msa" +"amh""tir""orm""som""swa" /* 85-89 */ +"kin""run""nya""mlg""epo" /* 90-94 */ +; + +static const char * psz_qt_to_iso639_2T_upper = +"cym""eus""cat""lat""que" /* 128-132 */ +"grn""aym""tat""uig""dzo" +"jaw""sun""glg""afr""bre" /* 138-142 */ +"iku""gla""glv""gle""ton" +"gre" /* 148 */ +; + +if ( i_language_code < 0x400 || i_language_code == 0x7FFF ) +{ +const void *p_data; +*b_mactables = true; +if ( i_language_code <= 94 ) +{ +p_data = psz_qt_to_iso639_2T_lower + i_language_code * 3; +} +else if ( i_language_code >= 128 && i_language_code <= 148 ) +{ +i_language_code -= 128; +p_data = psz_qt_to_iso639_2T_upper + i_language_code * 3; +} +else +return false; +memcpy( psz_iso, p_data, 3 ); +} +else +{ +*b_mactables
[vlc-commits] Add audio/ogg and video/ogg to vlc.desktop.in
vlc/vlc-2.2 | branch: master | Jean-Baptiste Kempf | Thu Sep 25 13:55:24 2014 +0200| [9f92846490751c29f2f07cc0d1000a0444b652b9] | committer: Jean-Baptiste Kempf Add audio/ogg and video/ogg to vlc.desktop.in Close #12282 Ref: Debian BTS #762564 (cherry picked from commit bba3fa4472757d7f7b7dcb855afaa5171743b729) Signed-off-by: Jean-Baptiste Kempf > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=9f92846490751c29f2f07cc0d1000a0444b652b9 --- share/vlc.desktop.in |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/vlc.desktop.in b/share/vlc.desktop.in index ab097bf..c5ea887 100644 --- a/share/vlc.desktop.in +++ b/share/vlc.desktop.in @@ -88,6 +88,6 @@ Icon=vlc Terminal=false Type=Application Categories=AudioVideo;Player;Recorder; -MimeType=video/dv;video/mpeg;video/x-mpeg;video/msvideo;video/quicktime;video/x-anim;video/x-avi;video/x-ms-asf;video/x-ms-wmv;video/x-msvideo;video/x-nsv;video/x-flc;video/x-fli;video/x-flv;video/vnd.rn-realvideo;video/mp4;video/mp4v-es;video/mp2t;application/ogg;application/x-ogg;video/x-ogm+ogg;audio/x-vorbis+ogg;application/x-matroska;audio/x-matroska;video/x-matroska;video/webm;audio/webm;audio/x-mp3;audio/x-mpeg;audio/mpeg;audio/x-wav;audio/x-mpegurl;audio/x-scpls;audio/x-m4a;audio/x-ms-asf;audio/x-ms-asx;audio/x-ms-wax;application/vnd.rn-realmedia;audio/x-real-audio;audio/x-pn-realaudio;application/x-flac;audio/x-flac;application/x-shockwave-flash;misc/ultravox;audio/vnd.rn-realaudio;audio/x-pn-aiff;audio/x-pn-au;audio/x-pn-wav;audio/x-pn-windows-acm;image/vnd.rn-realpix;audio/x-pn-realaudio-plugin;application/x-extension-mp4;audio/mp4;audio/amr;audio/amr-wb;x-content/video-vcd;x-content/video-svcd;x-content/video-dvd;x-content/audio-cdda;x-content/audio-player;application/xs pf+xml;x-scheme-handler/mms;x-scheme-handler/rtmp;x-scheme-handler/rtsp; +MimeType=video/dv;video/mpeg;video/x-mpeg;video/msvideo;video/quicktime;video/x-anim;video/x-avi;video/x-ms-asf;video/x-ms-wmv;video/x-msvideo;video/x-nsv;video/x-flc;video/x-fli;video/x-flv;video/vnd.rn-realvideo;video/mp4;video/mp4v-es;video/mp2t;application/ogg;application/x-ogg;video/x-ogm+ogg;audio/x-vorbis+ogg;audio/ogg;video/ogg;application/x-matroska;audio/x-matroska;video/x-matroska;video/webm;audio/webm;audio/x-mp3;audio/x-mpeg;audio/mpeg;audio/x-wav;audio/x-mpegurl;audio/x-scpls;audio/x-m4a;audio/x-ms-asf;audio/x-ms-asx;audio/x-ms-wax;application/vnd.rn-realmedia;audio/x-real-audio;audio/x-pn-realaudio;application/x-flac;audio/x-flac;application/x-shockwave-flash;misc/ultravox;audio/vnd.rn-realaudio;audio/x-pn-aiff;audio/x-pn-au;audio/x-pn-wav;audio/x-pn-windows-acm;image/vnd.rn-realpix;audio/x-pn-realaudio-plugin;application/x-extension-mp4;audio/mp4;audio/amr;audio/amr-wb;x-content/video-vcd;x-content/video-svcd;x-content/video-dvd;x-content/audio-cdda;x-content/audio-p layer;application/xspf+xml;x-scheme-handler/mms;x-scheme-handler/rtmp;x-scheme-handler/rtsp; X-KDE-Protocols=ftp,http,https,mms,rtmp,rtsp,sftp,smb Keywords=Player;Capture;DVD;Audio;Video;Server;Broadcast; ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] demux: mp4: fix heap read overflow in vide handler
vlc/vlc-2.2 | branch: master | Francois Cartegnie | Sat Sep 27 18:31:35 2014 +0200| [456cb8f019e409b8130622757bedf23080659b04] | committer: Jean-Baptiste Kempf demux: mp4: fix heap read overflow in vide handler (cherry picked from commit 3417a40402599d56395fd2ae0e55baec25e41a52) Signed-off-by: Jean-Baptiste Kempf > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=456cb8f019e409b8130622757bedf23080659b04 --- modules/demux/mp4/libmp4.c |2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c index cbe6e79..eaca2e6 100644 --- a/modules/demux/mp4/libmp4.c +++ b/modules/demux/mp4/libmp4.c @@ -1825,6 +1825,8 @@ int MP4_ReadBox_sample_vide( stream_t *p_stream, MP4_Box_t *p_box ) MP4_GET4BYTES( p_box->data.p_sample_vide->i_qt_data_size ); MP4_GET2BYTES( p_box->data.p_sample_vide->i_qt_frame_count ); +if ( i_read < 32 ) +MP4_READBOX_EXIT( 0 ); memcpy( &p_box->data.p_sample_vide->i_compressorname, p_peek, 32 ); p_peek += 32; i_read -= 32; ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] demux: mp4: fix overflow in cprt language decoding
vlc/vlc-2.2 | branch: master | Francois Cartegnie | Sat Sep 27 18:26:18 2014 +0200| [aff8684782ee144b6c06f7d63bfcca1ce3b31f10] | committer: Jean-Baptiste Kempf demux: mp4: fix overflow in cprt language decoding refs #12283 (cherry picked from commit fa6b1937bcbdd00726502c1f47a6826a08b5dade) Signed-off-by: Jean-Baptiste Kempf > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=aff8684782ee144b6c06f7d63bfcca1ce3b31f10 --- modules/demux/mp4/libmp4.c | 19 +++ modules/demux/mp4/libmp4.h |4 ++-- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c index c68c340..6609369 100644 --- a/modules/demux/mp4/libmp4.c +++ b/modules/demux/mp4/libmp4.c @@ -2342,26 +2342,21 @@ static int MP4_ReadBox_elst( stream_t *p_stream, MP4_Box_t *p_box ) static int MP4_ReadBox_cprt( stream_t *p_stream, MP4_Box_t *p_box ) { -unsigned int i_language; +uint16_t i_language; +bool b_mac; MP4_READBOX_ENTER( MP4_Box_data_cprt_t ); MP4_GETVERSIONFLAGS( p_box->data.p_cprt ); -i_language = GetWBE( p_peek ); -for( unsigned i = 0; i < 3; i++ ) -{ -p_box->data.p_cprt->i_language[i] = -( ( i_language >> ( (2-i)*5 ) )&0x1f ) + 0x60; -} -p_peek += 2; i_read -= 2; +MP4_GET2BYTES( i_language ); +decodeQtLanguageCode( i_language, p_box->data.p_cprt->rgs_language, &b_mac ); + MP4_GETSTRINGZ( p_box->data.p_cprt->psz_notice ); #ifdef MP4_VERBOSE -msg_Dbg( p_stream, "read box: \"cprt\" language %c%c%c notice %s", - p_box->data.p_cprt->i_language[0], - p_box->data.p_cprt->i_language[1], - p_box->data.p_cprt->i_language[2], +msg_Dbg( p_stream, "read box: \"cprt\" language %3.3s notice %s", + p_box->data.p_cprt->rgs_language, p_box->data.p_cprt->psz_notice ); #endif diff --git a/modules/demux/mp4/libmp4.h b/modules/demux/mp4/libmp4.h index 2fad10e..5e71347 100644 --- a/modules/demux/mp4/libmp4.h +++ b/modules/demux/mp4/libmp4.h @@ -748,8 +748,8 @@ typedef struct MP4_Box_data_cprt_s { uint8_t i_version; uint32_t i_flags; -/* 1 pad bit */ -unsigned char i_language[3]; + +char rgs_language[3]; /* ISO-639-2/T */ char *psz_notice; } MP4_Box_data_cprt_t; ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] demux: mp4: don't read at all if not content
vlc/vlc-2.2 | branch: master | Francois Cartegnie | Wed Sep 24 13:32:37 2014 +0200| [a92109bb6e9fd5da974a78d74978ca67070139e7] | committer: Jean-Baptiste Kempf demux: mp4: don't read at all if not content fixes 1 byte read overflow (cherry picked from commit 2d07e7885945ef30a55a078d956e4b6714c5c1ee) Signed-off-by: Jean-Baptiste Kempf > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=a92109bb6e9fd5da974a78d74978ca67070139e7 --- modules/demux/mp4/libmp4.c |4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c index e5e9697..1d02274 100644 --- a/modules/demux/mp4/libmp4.c +++ b/modules/demux/mp4/libmp4.c @@ -1396,7 +1396,7 @@ static int MP4_ReadBox_avcC( stream_t *p_stream, MP4_Box_t *p_box ) if( !p_avcC->i_sps_length || !p_avcC->sps ) goto error; -for( i = 0; i < p_avcC->i_sps && i_read; i++ ) +for( i = 0; i < p_avcC->i_sps && i_read > 2; i++ ) { MP4_GET2BYTES( p_avcC->i_sps_length[i] ); if ( p_avcC->i_sps_length[i] > i_read ) @@ -1421,7 +1421,7 @@ static int MP4_ReadBox_avcC( stream_t *p_stream, MP4_Box_t *p_box ) if( !p_avcC->i_pps_length || !p_avcC->pps ) goto error; -for( i = 0; i < p_avcC->i_pps && i_read; i++ ) +for( i = 0; i < p_avcC->i_pps && i_read > 2; i++ ) { MP4_GET2BYTES( p_avcC->i_pps_length[i] ); if( p_avcC->i_pps_length[i] > i_read ) ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] demux: mp4: don't trust atom type processing stsd (fix #12285)
vlc/vlc-2.2 | branch: master | Francois Cartegnie | Sat Sep 27 17:43:33 2014 +0200| [72ba79902865231d688932205dfa2ce72ec5f9be] | committer: Jean-Baptiste Kempf demux: mp4: don't trust atom type processing stsd (fix #12285) (cherry picked from commit 99fd06680b5a71928c3ebcf08a4f138b6d70b33d) Signed-off-by: Jean-Baptiste Kempf > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=72ba79902865231d688932205dfa2ce72ec5f9be --- modules/demux/mp4/libmp4.c |4 modules/demux/mp4/libmp4.h |1 + modules/demux/mp4/mp4.c| 24 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c index f27d22b..7bfc620 100644 --- a/modules/demux/mp4/libmp4.c +++ b/modules/demux/mp4/libmp4.c @@ -1608,6 +1608,7 @@ static int MP4_ReadBox_trkn( stream_t *p_stream, MP4_Box_t *p_box ) static int MP4_ReadBox_sample_soun( stream_t *p_stream, MP4_Box_t *p_box ) { +p_box->i_handler = ATOM_soun; MP4_READBOX_ENTER( MP4_Box_data_sample_soun_t ); p_box->data.p_sample_soun->p_qt_description = NULL; @@ -1779,6 +1780,7 @@ static void MP4_FreeBox_sample_soun( MP4_Box_t *p_box ) int MP4_ReadBox_sample_vide( stream_t *p_stream, MP4_Box_t *p_box ) { +p_box->i_handler = ATOM_vide; MP4_READBOX_ENTER( MP4_Box_data_sample_vide_t ); for( unsigned i = 0; i < 6 ; i++ ) @@ -1865,6 +1867,7 @@ static int MP4_ReadBox_sample_text( stream_t *p_stream, MP4_Box_t *p_box ) { int32_t t; +p_box->i_handler = ATOM_text; MP4_READBOX_ENTER( MP4_Box_data_sample_text_t ); MP4_GET4BYTES( p_box->data.p_sample_text->i_reserved1 ); @@ -1915,6 +1918,7 @@ static int MP4_ReadBox_sample_text( stream_t *p_stream, MP4_Box_t *p_box ) static int MP4_ReadBox_sample_tx3g( stream_t *p_stream, MP4_Box_t *p_box ) { +p_box->i_handler = ATOM_text; MP4_READBOX_ENTER( MP4_Box_data_sample_text_t ); MP4_GET4BYTES( p_box->data.p_sample_text->i_reserved1 ); diff --git a/modules/demux/mp4/libmp4.h b/modules/demux/mp4/libmp4.h index 9c8212a..cc75b93 100644 --- a/modules/demux/mp4/libmp4.h +++ b/modules/demux/mp4/libmp4.h @@ -1282,6 +1282,7 @@ typedef struct MP4_Box_s uint32_t i_type; uint32_t i_shortsize; +uint32_t i_handler; /* stsd handler */ UUID_t i_uuid; /* Set if i_type == "uuid" */ diff --git a/modules/demux/mp4/mp4.c b/modules/demux/mp4/mp4.c index 06732ce..f128386 100644 --- a/modules/demux/mp4/mp4.c +++ b/modules/demux/mp4/mp4.c @@ -2211,7 +2211,7 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track, switch( p_track->fmt.i_cat ) { case VIDEO_ES: -if ( !p_sample->data.p_sample_vide ) +if ( !p_sample->data.p_sample_vide || p_sample->i_handler != ATOM_vide ) break; p_track->fmt.video.i_width = p_sample->data.p_sample_vide->i_width; p_track->fmt.video.i_height = p_sample->data.p_sample_vide->i_height; @@ -2268,7 +2268,7 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track, break; case AUDIO_ES: -if ( !p_sample->data.p_sample_soun ) +if ( !p_sample->data.p_sample_soun || p_sample->i_handler != ATOM_soun ) break; p_track->fmt.audio.i_channels = p_sample->data.p_sample_soun->i_channelcount; @@ -2409,6 +2409,8 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track, case( VLC_FOURCC( 'r', 'a', 'w', ' ' ) ): case( VLC_FOURCC( 'N', 'O', 'N', 'E' ) ): { +if ( p_sample->i_handler != ATOM_soun ) +break; MP4_Box_data_sample_soun_t *p_soun = p_sample->data.p_sample_soun; if(p_soun && (p_soun->i_samplesize+7)/8 == 1 ) @@ -2439,6 +2441,8 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track, case( VLC_FOURCC( 't', 'e', 'x', 't' ) ): case( VLC_FOURCC( 't', 'x', '3', 'g' ) ): { +if ( p_sample->i_handler != ATOM_text ) +break; p_track->fmt.i_codec = VLC_CODEC_TX3G; MP4_Box_data_sample_text_t *p_text = p_sample->data.p_sample_text; if ( p_text ) @@ -2495,6 +2499,8 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track, break; case VLC_CODEC_DVD_LPCM: { +if ( p_sample->i_handler != ATOM_soun ) +break; MP4_Box_data_sample_soun_t *p_soun = p_sample->data.p_sample_soun; if( p_soun->i_qt_version == 2 ) { @@ -2708,6 +2714,9 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track, case VLC_FOURCC( 'V', 'P', '3', '1' ): case VLC_FOURCC( '3', 'I', 'V', '1' ): case VLC_FOURCC( 'Z', 'y', 'G', 'o' ): +{ +if ( p_sample->i_handler != ATOM_vide ) +break; p_track->fmt.i_extra =
[vlc-commits] demux: mp4: use new lang tables
vlc/vlc-2.2 | branch: master | Francois Cartegnie | Fri Sep 26 19:27:50 2014 +0200| [0cbdd515e52ba2ea078922c55b856ae13c9cdb17] | committer: Jean-Baptiste Kempf demux: mp4: use new lang tables The "```" case could also never happen as this is the decoding of value 0 which should map to mac. (cherry picked from commit 07a88c4b37cb6e38082966679bb8f1e40c9894eb) Signed-off-by: Jean-Baptiste Kempf > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=0cbdd515e52ba2ea078922c55b856ae13c9cdb17 --- modules/demux/mp4/libmp4.c | 14 --- modules/demux/mp4/libmp4.h |7 +++--- modules/demux/mp4/mp4.c| 57 ++-- 3 files changed, 9 insertions(+), 69 deletions(-) diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c index 5754b7f..c68c340 100644 --- a/modules/demux/mp4/libmp4.c +++ b/modules/demux/mp4/libmp4.c @@ -884,12 +884,8 @@ static int MP4_ReadBox_mdhd( stream_t *p_stream, MP4_Box_t *p_box ) } MP4_GET2BYTES( i_language ); -p_box->data.p_mdhd->i_language_code = i_language; -for( unsigned i = 0; i < 3; i++ ) -{ -p_box->data.p_mdhd->i_language[i] = -( ( i_language >> ( (2-i)*5 ) )&0x1f ) + 0x60; -} +decodeQtLanguageCode( i_language, p_box->data.p_mdhd->rgs_language, + &p_box->data.p_mdhd->b_mac_encoding ); MP4_GET2BYTES( p_box->data.p_mdhd->i_predefined ); @@ -897,14 +893,12 @@ static int MP4_ReadBox_mdhd( stream_t *p_stream, MP4_Box_t *p_box ) MP4_ConvertDate2Str( s_creation_time, p_box->data.p_mdhd->i_creation_time, false ); MP4_ConvertDate2Str( s_modification_time, p_box->data.p_mdhd->i_modification_time, false ); MP4_ConvertDate2Str( s_duration, p_box->data.p_mdhd->i_duration, true ); -msg_Dbg( p_stream, "read box: \"mdhd\" creation %s modification %s time scale %d duration %s language %c%c%c", +msg_Dbg( p_stream, "read box: \"mdhd\" creation %s modification %s time scale %d duration %s language %3.3s", s_creation_time, s_modification_time, (uint32_t)p_box->data.p_mdhd->i_timescale, s_duration, - p_box->data.p_mdhd->i_language[0], - p_box->data.p_mdhd->i_language[1], - p_box->data.p_mdhd->i_language[2] ); + (char*) &p_box->data.p_mdhd->rgs_language ); #endif MP4_READBOX_EXIT( 1 ); } diff --git a/modules/demux/mp4/libmp4.h b/modules/demux/mp4/libmp4.h index cc75b93..2fad10e 100644 --- a/modules/demux/mp4/libmp4.h +++ b/modules/demux/mp4/libmp4.h @@ -379,10 +379,9 @@ typedef struct MP4_Box_data_mdhd_s uint32_t i_timescale; uint64_t i_duration; -/* one bit for pad */ -uint16_t i_language_code; -/* unsigned int(5)[3] language difference with 0x60*/ -unsigned char i_language[3]; +char rgs_language[3]; /* ISO-639-2/T or Mac lang table */ +bool b_mac_encoding; /* media using mac encoding */ + uint16_t i_predefined; } MP4_Box_data_mdhd_t; diff --git a/modules/demux/mp4/mp4.c b/modules/demux/mp4/mp4.c index f128386..dad0ad0 100644 --- a/modules/demux/mp4/mp4.c +++ b/modules/demux/mp4/mp4.c @@ -125,7 +125,6 @@ static int MP4_TrackNextSample( demux_t *, mp4_track_t *, uint32_t ); static void MP4_TrackSetELST( demux_t *, mp4_track_t *, int64_t ); static void MP4_UpdateSeekpoint( demux_t * ); -static const char *MP4_ConvertMacCode( uint16_t ); static MP4_Box_t * MP4_GetTrexByTrackID( MP4_Box_t *p_moov, const uint32_t i_id ); @@ -3115,19 +3114,8 @@ static void MP4_TrackCreate( demux_t *p_demux, mp4_track_t *p_track, if( p_track->i_timescale == 0 ) return; -if( BOXDATA(p_mdhd)->i_language_code < 0x400 ) -{ -strcpy( language, MP4_ConvertMacCode( BOXDATA(p_mdhd)->i_language_code ) ); -p_track->b_mac_encoding = true; -} -else if( BOXDATA(p_mdhd)->i_language_code == 0x7fff ) -p_track->b_mac_encoding = true; -else -{ -for( unsigned i = 0; i < 3; i++ ) -language[i] = BOXDATA(p_mdhd)->i_language[i]; -language[3] = '\0'; -} +memcpy( &language, BOXDATA(p_mdhd)->rgs_language, 3 ); +p_track->b_mac_encoding = BOXDATA(p_mdhd)->b_mac_encoding; switch( p_hdlr->data.p_hdlr->i_handler_type ) { @@ -3627,47 +3615,6 @@ static void MP4_TrackSetELST( demux_t *p_demux, mp4_track_t *tk, } } -/* */ -static const char *MP4_ConvertMacCode( uint16_t i_code ) -{ -static const struct { const char psz_iso639_1[3]; uint16_t i_code; } p_cvt[] = { -{ "en", 0 }, { "fr", 1 }, { "de", 2 }, { "it", 3 }, { "nl", 4 }, -{ "sv", 5 }, { "es", 6 }, { "da", 7 }, { "pt", 8 }, { "no", 9 }, -{ "he", 10 }, { "ja", 11 }, { "ar", 12 }, { "fi", 13 }, { "el", 14 }, -{ "is", 15 }, { "mt", 16 }, { "tr", 17 }, { "hr", 18 }, { "zh", 19 }, -{
[vlc-commits] demux: mp4: fix heap overflow reading esds
vlc/vlc-2.2 | branch: master | Francois Cartegnie | Sat Sep 27 18:29:13 2014 +0200| [86271ad8ba8e61fec437c9c8a6b71686712996bc] | committer: Jean-Baptiste Kempf demux: mp4: fix heap overflow reading esds (cherry picked from commit 44c7fb66827345a5179b4f919c7234c65d569db1) Signed-off-by: Jean-Baptiste Kempf > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=86271ad8ba8e61fec437c9c8a6b71686712996bc --- modules/demux/mp4/libmp4.c |1 + 1 file changed, 1 insertion(+) diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c index 7bfc620..cbe6e79 100644 --- a/modules/demux/mp4/libmp4.c +++ b/modules/demux/mp4/libmp4.c @@ -1242,6 +1242,7 @@ static int MP4_ReadBox_esds( stream_t *p_stream, MP4_Box_t *p_box ) unsigned int i_len; MP4_GET1BYTE( i_len ); +i_len = __MIN(i_read, i_len); es_descriptor.psz_URL = malloc( i_len + 1 ); if( es_descriptor.psz_URL ) { ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] theora: cleanup
vlc | branch: master | Tristan Matthews | Sat Sep 27 12:45:56 2014 -0400| [ba3094452b50ed262e74145234e0c05e34796a58] | committer: Tristan Matthews theora: cleanup Remove dead code and superfluous width/height variables. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ba3094452b50ed262e74145234e0c05e34796a58 --- modules/codec/theora.c | 50 +--- 1 file changed, 22 insertions(+), 28 deletions(-) diff --git a/modules/codec/theora.c b/modules/codec/theora.c index 3c033f4..ded8538 100644 --- a/modules/codec/theora.c +++ b/modules/codec/theora.c @@ -566,7 +566,6 @@ static void CloseDecoder( vlc_object_t *p_this ) th_info_clear(&p_sys->ti); th_comment_clear(&p_sys->tc); th_decode_free(p_sys->tcx); -p_sys->tcx = NULL; free( p_sys ); } @@ -635,7 +634,6 @@ struct encoder_sys_t th_info ti; /* theora bitstream settings */ th_comment tc; /* theora comment header */ th_enc_ctx *tcx; /* theora context */ -int i_width, i_height; }; /* @@ -695,9 +693,6 @@ static int OpenEncoder( vlc_object_t *p_this ) p_sys->ti.pic_x = 0 /*frame_x_offset*/; p_sys->ti.pic_y = 0 /*frame_y_offset*/; -p_sys->i_width = p_sys->ti.frame_width; -p_sys->i_height = p_sys->ti.frame_height; - if( !p_enc->fmt_in.video.i_frame_rate || !p_enc->fmt_in.video.i_frame_rate_base ) { @@ -783,77 +778,77 @@ static block_t *Encode( encoder_t *p_enc, picture_t *p_pict ) ogg_packet oggpacket; block_t *p_block; th_ycbcr_buffer ycbcr; -int i; +unsigned i; if( !p_pict ) return NULL; /* Sanity check */ -if( p_pict->p[0].i_pitch < (int)p_sys->i_width || -p_pict->p[0].i_lines < (int)p_sys->i_height ) +if( p_pict->p[0].i_pitch < (int)p_sys->ti.frame_width || +p_pict->p[0].i_lines < (int)p_sys->ti.frame_height ) { msg_Warn( p_enc, "frame is smaller than encoding size" "(%ix%i->%ix%i) -> dropping frame", p_pict->p[0].i_pitch, p_pict->p[0].i_lines, - p_sys->i_width, p_sys->i_height ); + p_sys->ti.frame_width, p_sys->ti.frame_height ); return NULL; } /* Fill padding */ -if( p_pict->p[0].i_visible_pitch < (int)p_sys->i_width ) +if( p_pict->p[0].i_visible_pitch < (int)p_sys->ti.frame_width ) { -for( i = 0; i < p_sys->i_height; i++ ) +for( i = 0; i < p_sys->ti.frame_height; i++ ) { memset( p_pict->p[0].p_pixels + i * p_pict->p[0].i_pitch + p_pict->p[0].i_visible_pitch, *( p_pict->p[0].p_pixels + i * p_pict->p[0].i_pitch + p_pict->p[0].i_visible_pitch - 1 ), -p_sys->i_width - p_pict->p[0].i_visible_pitch ); +p_sys->ti.frame_width - p_pict->p[0].i_visible_pitch ); } -for( i = 0; i < p_sys->i_height / 2; i++ ) +for( i = 0; i < p_sys->ti.frame_height / 2; i++ ) { memset( p_pict->p[1].p_pixels + i * p_pict->p[1].i_pitch + p_pict->p[1].i_visible_pitch, *( p_pict->p[1].p_pixels + i * p_pict->p[1].i_pitch + p_pict->p[1].i_visible_pitch - 1 ), -p_sys->i_width / 2 - p_pict->p[1].i_visible_pitch ); +p_sys->ti.frame_width / 2 - p_pict->p[1].i_visible_pitch ); memset( p_pict->p[2].p_pixels + i * p_pict->p[2].i_pitch + p_pict->p[2].i_visible_pitch, *( p_pict->p[2].p_pixels + i * p_pict->p[2].i_pitch + p_pict->p[2].i_visible_pitch - 1 ), -p_sys->i_width / 2 - p_pict->p[2].i_visible_pitch ); +p_sys->ti.frame_width / 2 - p_pict->p[2].i_visible_pitch ); } } -if( p_pict->p[0].i_visible_lines < (int)p_sys->i_height ) +if( p_pict->p[0].i_visible_lines < (int)p_sys->ti.frame_height ) { -for( i = p_pict->p[0].i_visible_lines; i < p_sys->i_height; i++ ) +for( i = p_pict->p[0].i_visible_lines; i < p_sys->ti.frame_height; i++ ) { memset( p_pict->p[0].p_pixels + i * p_pict->p[0].i_pitch, 0, -p_sys->i_width ); +p_sys->ti.frame_width ); } -for( i = p_pict->p[1].i_visible_lines; i < p_sys->i_height / 2; i++ ) +for( i = p_pict->p[1].i_visible_lines; i < p_sys->ti.frame_height / 2; i++ ) { memset( p_pict->p[1].p_pixels + i * p_pict->p[1].i_pitch, 0x80, -p_sys->i_width / 2 ); +p_sys->ti.frame_width / 2 ); memset( p_pict->p[2].p_pixels + i * p_pict->p[2].i_pitch, 0x80, -p_sys->i_width / 2 ); +
[vlc-commits] demux: mp4: fix heap read overflow in vide handler
vlc | branch: master | Francois Cartegnie | Sat Sep 27 18:31:35 2014 +0200| [3417a40402599d56395fd2ae0e55baec25e41a52] | committer: Francois Cartegnie demux: mp4: fix heap read overflow in vide handler > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3417a40402599d56395fd2ae0e55baec25e41a52 --- modules/demux/mp4/libmp4.c |2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c index 63d7db4..84b3f80 100644 --- a/modules/demux/mp4/libmp4.c +++ b/modules/demux/mp4/libmp4.c @@ -1907,6 +1907,8 @@ int MP4_ReadBox_sample_vide( stream_t *p_stream, MP4_Box_t *p_box ) MP4_GET4BYTES( p_box->data.p_sample_vide->i_qt_data_size ); MP4_GET2BYTES( p_box->data.p_sample_vide->i_qt_frame_count ); +if ( i_read < 32 ) +MP4_READBOX_EXIT( 0 ); memcpy( &p_box->data.p_sample_vide->i_compressorname, p_peek, 32 ); p_peek += 32; i_read -= 32; ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] demux: mp4: fix overflow in cprt language decoding
vlc | branch: master | Francois Cartegnie | Sat Sep 27 18:26:18 2014 +0200| [fa6b1937bcbdd00726502c1f47a6826a08b5dade] | committer: Francois Cartegnie demux: mp4: fix overflow in cprt language decoding refs #12283 > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fa6b1937bcbdd00726502c1f47a6826a08b5dade --- modules/demux/mp4/libmp4.c | 19 +++ modules/demux/mp4/libmp4.h |4 ++-- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c index 1961efa..1263723 100644 --- a/modules/demux/mp4/libmp4.c +++ b/modules/demux/mp4/libmp4.c @@ -2426,26 +2426,21 @@ static int MP4_ReadBox_elst( stream_t *p_stream, MP4_Box_t *p_box ) static int MP4_ReadBox_cprt( stream_t *p_stream, MP4_Box_t *p_box ) { -unsigned int i_language; +uint16_t i_language; +bool b_mac; MP4_READBOX_ENTER( MP4_Box_data_cprt_t ); MP4_GETVERSIONFLAGS( p_box->data.p_cprt ); -i_language = GetWBE( p_peek ); -for( unsigned i = 0; i < 3; i++ ) -{ -p_box->data.p_cprt->i_language[i] = -( ( i_language >> ( (2-i)*5 ) )&0x1f ) + 0x60; -} -p_peek += 2; i_read -= 2; +MP4_GET2BYTES( i_language ); +decodeQtLanguageCode( i_language, p_box->data.p_cprt->rgs_language, &b_mac ); + MP4_GETSTRINGZ( p_box->data.p_cprt->psz_notice ); #ifdef MP4_VERBOSE -msg_Dbg( p_stream, "read box: \"cprt\" language %c%c%c notice %s", - p_box->data.p_cprt->i_language[0], - p_box->data.p_cprt->i_language[1], - p_box->data.p_cprt->i_language[2], +msg_Dbg( p_stream, "read box: \"cprt\" language %3.3s notice %s", + p_box->data.p_cprt->rgs_language, p_box->data.p_cprt->psz_notice ); #endif diff --git a/modules/demux/mp4/libmp4.h b/modules/demux/mp4/libmp4.h index 8668052..683b677 100644 --- a/modules/demux/mp4/libmp4.h +++ b/modules/demux/mp4/libmp4.h @@ -756,8 +756,8 @@ typedef struct MP4_Box_data_cprt_s { uint8_t i_version; uint32_t i_flags; -/* 1 pad bit */ -unsigned char i_language[3]; + +char rgs_language[3]; /* ISO-639-2/T */ char *psz_notice; } MP4_Box_data_cprt_t; ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] demux: mp4: fix heap overflow reading esds
vlc | branch: master | Francois Cartegnie | Sat Sep 27 18:29:13 2014 +0200| [44c7fb66827345a5179b4f919c7234c65d569db1] | committer: Francois Cartegnie demux: mp4: fix heap overflow reading esds > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=44c7fb66827345a5179b4f919c7234c65d569db1 --- modules/demux/mp4/libmp4.c |1 + 1 file changed, 1 insertion(+) diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c index 1263723..63d7db4 100644 --- a/modules/demux/mp4/libmp4.c +++ b/modules/demux/mp4/libmp4.c @@ -1237,6 +1237,7 @@ static int MP4_ReadBox_esds( stream_t *p_stream, MP4_Box_t *p_box ) unsigned int i_len; MP4_GET1BYTE( i_len ); +i_len = __MIN(i_read, i_len); es_descriptor.psz_URL = malloc( i_len + 1 ); if( es_descriptor.psz_URL ) { ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] demux: mkv: fix previous type fix
vlc | branch: master | Francois Cartegnie | Sat Sep 27 18:12:55 2014 +0200| [2ca410382c2ac6443d99700a7e4399e0af591076] | committer: Francois Cartegnie demux: mkv: fix previous type fix first segment is always 0, not an undefined value regression introduced by aaebd49a151fae2fd86242dadd3e6e93cbb41e3b instead of removing the tautology > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2ca410382c2ac6443d99700a7e4399e0af591076 --- modules/demux/mkv/virtual_segment.hpp |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/demux/mkv/virtual_segment.hpp b/modules/demux/mkv/virtual_segment.hpp index 5e659cd..ed40e59 100644 --- a/modules/demux/mkv/virtual_segment.hpp +++ b/modules/demux/mkv/virtual_segment.hpp @@ -121,7 +121,7 @@ public: inline virtual_edition_c * CurrentEdition() { -if( i_current_edition > 0 && i_current_edition < editions.size() ) +if( i_current_edition < editions.size() ) return editions[i_current_edition]; return NULL; } ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] demux: mp4: don't trust atom type processing stsd (fix #12285)
vlc | branch: master | Francois Cartegnie | Sat Sep 27 17:43:33 2014 +0200| [99fd06680b5a71928c3ebcf08a4f138b6d70b33d] | committer: Francois Cartegnie demux: mp4: don't trust atom type processing stsd (fix #12285) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=99fd06680b5a71928c3ebcf08a4f138b6d70b33d --- modules/demux/mp4/libmp4.c |4 modules/demux/mp4/libmp4.h |1 + modules/demux/mp4/mp4.c| 24 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c index 8cb6f8b..1961efa 100644 --- a/modules/demux/mp4/libmp4.c +++ b/modules/demux/mp4/libmp4.c @@ -1690,6 +1690,7 @@ static int MP4_ReadBox_trkn( stream_t *p_stream, MP4_Box_t *p_box ) static int MP4_ReadBox_sample_soun( stream_t *p_stream, MP4_Box_t *p_box ) { +p_box->i_handler = ATOM_soun; MP4_READBOX_ENTER( MP4_Box_data_sample_soun_t ); p_box->data.p_sample_soun->p_qt_description = NULL; @@ -1861,6 +1862,7 @@ static void MP4_FreeBox_sample_soun( MP4_Box_t *p_box ) int MP4_ReadBox_sample_vide( stream_t *p_stream, MP4_Box_t *p_box ) { +p_box->i_handler = ATOM_vide; MP4_READBOX_ENTER( MP4_Box_data_sample_vide_t ); for( unsigned i = 0; i < 6 ; i++ ) @@ -1947,6 +1949,7 @@ static int MP4_ReadBox_sample_text( stream_t *p_stream, MP4_Box_t *p_box ) { int32_t t; +p_box->i_handler = ATOM_text; MP4_READBOX_ENTER( MP4_Box_data_sample_text_t ); MP4_GET4BYTES( p_box->data.p_sample_text->i_reserved1 ); @@ -1997,6 +2000,7 @@ static int MP4_ReadBox_sample_text( stream_t *p_stream, MP4_Box_t *p_box ) static int MP4_ReadBox_sample_tx3g( stream_t *p_stream, MP4_Box_t *p_box ) { +p_box->i_handler = ATOM_text; MP4_READBOX_ENTER( MP4_Box_data_sample_text_t ); MP4_GET4BYTES( p_box->data.p_sample_text->i_reserved1 ); diff --git a/modules/demux/mp4/libmp4.h b/modules/demux/mp4/libmp4.h index 3893e99..8668052 100644 --- a/modules/demux/mp4/libmp4.h +++ b/modules/demux/mp4/libmp4.h @@ -1375,6 +1375,7 @@ typedef struct MP4_Box_s uint32_t i_type; uint32_t i_shortsize; +uint32_t i_handler; /* stsd handler */ enum { diff --git a/modules/demux/mp4/mp4.c b/modules/demux/mp4/mp4.c index 34cd2c2..8dceb5a 100644 --- a/modules/demux/mp4/mp4.c +++ b/modules/demux/mp4/mp4.c @@ -2306,7 +2306,7 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track, switch( p_track->fmt.i_cat ) { case VIDEO_ES: -if ( !p_sample->data.p_sample_vide ) +if ( !p_sample->data.p_sample_vide || p_sample->i_handler != ATOM_vide ) break; p_track->fmt.video.i_width = p_sample->data.p_sample_vide->i_width; p_track->fmt.video.i_height = p_sample->data.p_sample_vide->i_height; @@ -2363,7 +2363,7 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track, break; case AUDIO_ES: -if ( !p_sample->data.p_sample_soun ) +if ( !p_sample->data.p_sample_soun || p_sample->i_handler != ATOM_soun ) break; p_track->fmt.audio.i_channels = p_sample->data.p_sample_soun->i_channelcount; @@ -2548,6 +2548,8 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track, case( VLC_FOURCC( 'r', 'a', 'w', ' ' ) ): case( VLC_FOURCC( 'N', 'O', 'N', 'E' ) ): { +if ( p_sample->i_handler != ATOM_soun ) +break; MP4_Box_data_sample_soun_t *p_soun = p_sample->data.p_sample_soun; if(p_soun && (p_soun->i_samplesize+7)/8 == 1 ) @@ -2584,6 +2586,8 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track, case( VLC_FOURCC( 't', 'e', 'x', 't' ) ): case( VLC_FOURCC( 't', 'x', '3', 'g' ) ): { +if ( p_sample->i_handler != ATOM_text ) +break; p_track->fmt.i_codec = VLC_CODEC_TX3G; MP4_Box_data_sample_text_t *p_text = p_sample->data.p_sample_text; if ( p_text ) @@ -2640,6 +2644,8 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track, break; case VLC_CODEC_DVD_LPCM: { +if ( p_sample->i_handler != ATOM_soun ) +break; MP4_Box_data_sample_soun_t *p_soun = p_sample->data.p_sample_soun; if( p_soun->i_qt_version == 2 ) { @@ -2853,6 +2859,9 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track, case VLC_FOURCC( 'V', 'P', '3', '1' ): case VLC_FOURCC( '3', 'I', 'V', '1' ): case VLC_FOURCC( 'Z', 'y', 'G', 'o' ): +{ +if ( p_sample->i_handler != ATOM_vide ) +break; p_track->fmt.i_extra = p_sample->data.p_sample_vide->i_qt_image_description; if( p_track->fmt.i_extra > 0 ) @@ -2863,6 +2872,7 @@ static int TrackCreateES( demux_t
[vlc-commits] demux: mp4: add boxdata and missing checks
vlc | branch: master | Francois Cartegnie | Sat Sep 27 17:57:53 2014 +0200| [3c8d0b092bf66feeb48d54dd88710af48f5aa735] | committer: Francois Cartegnie demux: mp4: add boxdata and missing checks > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3c8d0b092bf66feeb48d54dd88710af48f5aa735 --- modules/demux/mp4/mp4.c | 28 +--- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/modules/demux/mp4/mp4.c b/modules/demux/mp4/mp4.c index 8dceb5a..a146de7 100644 --- a/modules/demux/mp4/mp4.c +++ b/modules/demux/mp4/mp4.c @@ -2509,24 +2509,23 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track, } case( ATOM_eac3 ): { -MP4_Box_t *p_dec3_box = MP4_BoxGet( p_sample, "dec3", 0 ); +const MP4_Box_t *p_dec3 = MP4_BoxGet( p_sample, "dec3", 0 ); p_track->fmt.i_codec = VLC_CODEC_EAC3; -if( p_dec3_box ) +if( p_dec3 && BOXDATA(p_dec3) ) { -MP4_Box_data_dec3_t *p_dec3 = p_dec3_box->data.p_dec3; p_track->fmt.audio.i_channels = 0; -p_track->fmt.i_bitrate = p_dec3->i_data_rate * 1000; +p_track->fmt.i_bitrate = BOXDATA(p_dec3)->i_data_rate * 1000; p_track->fmt.audio.i_bitspersample = 0; } break; } case( ATOM_ac3 ): { -MP4_Box_t *p_dac3_box = MP4_BoxGet( p_sample, "dac3", 0 ); +const MP4_Box_t *p_dac3 = MP4_BoxGet( p_sample, "dac3", 0 ); p_track->fmt.i_codec = VLC_CODEC_A52; -if( p_dac3_box ) +if( p_dac3 && BOXDATA(p_dac3) ) { static const int pi_bitrate[] = { 32, 40, 48, 56, @@ -2535,11 +2534,10 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track, 256, 320, 384, 448, 512, 576, 640, }; -MP4_Box_data_dac3_t *p_dac3 = p_dac3_box->data.p_dac3; p_track->fmt.audio.i_channels = 0; p_track->fmt.i_bitrate = 0; -if( p_dac3->i_bitrate_code < sizeof(pi_bitrate)/sizeof(*pi_bitrate) ) -p_track->fmt.i_bitrate = pi_bitrate[p_dac3->i_bitrate_code] * 1000; +if( BOXDATA(p_dac3)->i_bitrate_code < sizeof(pi_bitrate)/sizeof(*pi_bitrate) ) +p_track->fmt.i_bitrate = pi_bitrate[BOXDATA(p_dac3)->i_bitrate_code] * 1000; p_track->fmt.audio.i_bitspersample = 0; } break; @@ -2905,7 +2903,7 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track, case VLC_FOURCC( 'v', 'c', '-', '1' ): { MP4_Box_t *p_dvc1 = MP4_BoxGet( p_sample, "dvc1" ); -if( p_dvc1 ) +if( p_dvc1 && BOXDATA(p_dvc1) ) { p_track->fmt.i_extra = BOXDATA(p_dvc1)->i_vc1; if( p_track->fmt.i_extra > 0 ) @@ -2927,7 +2925,7 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track, { MP4_Box_t *p_avcC = MP4_BoxGet( p_sample, "avcC" ); -if( p_avcC ) +if( p_avcC && BOXDATA(p_avcC) ) { p_track->fmt.i_extra = BOXDATA(p_avcC)->i_avcC; if( p_track->fmt.i_extra > 0 ) @@ -2948,13 +2946,13 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track, { MP4_Box_t *p_hvcC = MP4_BoxGet( p_sample, "hvcC" ); -if( p_hvcC ) +if( p_hvcC && BOXDATA(p_hvcC) ) { -p_track->fmt.i_extra = p_hvcC->data.p_hvcC->i_hvcC; +p_track->fmt.i_extra = BOXDATA(p_hvcC)->i_hvcC; if( p_track->fmt.i_extra > 0 ) { -p_track->fmt.p_extra = malloc( p_hvcC->data.p_hvcC->i_hvcC ); -memcpy( p_track->fmt.p_extra, p_hvcC->data.p_hvcC->p_hvcC, +p_track->fmt.p_extra = malloc( BOXDATA(p_hvcC)->i_hvcC ); +memcpy( p_track->fmt.p_extra, BOXDATA(p_hvcC)->p_hvcC, p_track->fmt.i_extra ); } p_track->fmt.i_codec = VLC_CODEC_HEVC; ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] wl_screenshooter: Wayland screen grabber
vlc | branch: master | Rémi Denis-Courmont | Sat Sep 27 18:53:15 2014 +0300| [cc79ed90a9d70190be59924aa6d730a49d002e29] | committer: Rémi Denis-Courmont wl_screenshooter: Wayland screen grabber > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=cc79ed90a9d70190be59924aa6d730a49d002e29 --- NEWS|1 + modules/MODULES_LIST|1 + modules/access/Makefile.am | 16 ++ modules/access/screen/wayland.c | 513 +++ po/POTFILES.in |1 + 5 files changed, 532 insertions(+) Diff: http://git.videolan.org/gitweb.cgi/vlc.git/?a=commitdiff;h=cc79ed90a9d70190be59924aa6d730a49d002e29 ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] Build system support for wayland-scanner
vlc | branch: master | Rémi Denis-Courmont | Sat Sep 27 11:45:07 2014 +0300| [fa446c65542bbc6387fb4b333de93f205255faab] | committer: Rémi Denis-Courmont Build system support for wayland-scanner > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fa446c65542bbc6387fb4b333de93f205255faab --- configure.ac| 12 modules/.gitignore |2 ++ modules/Makefile.am | 12 3 files changed, 26 insertions(+) diff --git a/configure.ac b/configure.ac index eff4995..eaf4dcf 100644 --- a/configure.ac +++ b/configure.ac @@ -3182,7 +3182,19 @@ dnl AC_ARG_ENABLE(wayland, [AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)])]) have_wayland="no" +AC_ARG_VAR([WAYLAND_SCANNER], [Wayland scanner utility]) + AS_IF([test "${enable_wayland}" != "no"], [ + AC_MSG_CHECKING([for the Wayland scanner]) + AS_IF([test -z "$WAYLAND_SCANNER"], [ +PKG_CHECK_EXISTS([wayland-scanner], [ + WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)" +], [ + WAYLAND_SCANNER="wayland-scanner" +]) + ]) + AC_MSG_RESULT([$WAYLAND_SCANNER]) + PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91], [ have_wayland="yes" ], [ diff --git a/modules/.gitignore b/modules/.gitignore index 87bac2f..8497dd8 100644 --- a/modules/.gitignore +++ b/modules/.gitignore @@ -1,3 +1,5 @@ +*-client-protocol.h +*-protocol.c plugins.dat srtp-test-aes srtp-test-recv diff --git a/modules/Makefile.am b/modules/Makefile.am index 005c150..486e71e 100644 --- a/modules/Makefile.am +++ b/modules/Makefile.am @@ -1,6 +1,7 @@ noinst_LTLIBRARIES = noinst_HEADERS = check_PROGRAMS = +EXTRA_DIST = BASE_SUBDIRS = \ audio_filter \ @@ -72,3 +73,14 @@ module.rc.lo: module.rc -i $< -o $@ echo HELLO endif + +# Wayland +SUFFIXES += -client-protocol.h -protocol.c .xml + +.xml-client-protocol.h: + $(AM_V_GEN)$(WAYLAND_SCANNER) client-header < "$^" > "$@.tmp" + $(AM_V_at)mv -f -- "$@.tmp" "$@" + +.xml-protocol.c: + $(AM_V_GEN)$(WAYLAND_SCANNER) code < "$^" > "$@.tmp" + $(AM_V_at)mv -f -- "$@.tmp" "$@" ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits