[vlc-commits] demux: mp4: use define for block size
vlc | branch: master | Francois Cartegnie | Fri Apr 4 08:44:17 2014 +0200| [5b24b0b6f58b211c9f8642f77d50603363a0a850] | committer: Francois Cartegnie demux: mp4: use define for block size > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=5b24b0b6f58b211c9f8642f77d50603363a0a850 --- modules/demux/mp4/libmp4.c | 10 +- modules/demux/mp4/libmp4.h |2 ++ modules/demux/mp4/mp4.c|4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c index 90489da..222313e 100644 --- a/modules/demux/mp4/libmp4.c +++ b/modules/demux/mp4/libmp4.c @@ -838,8 +838,8 @@ static int MP4_ReadBox_tkhd( stream_t *p_stream, MP4_Box_t *p_box ) scale[1], translate[0], translate[1], - (float)p_box->data.p_tkhd->i_width / 65536, - (float)p_box->data.p_tkhd->i_height / 65536, + (float)p_box->data.p_tkhd->i_width / BLOCK16x16, + (float)p_box->data.p_tkhd->i_height / BLOCK16x16, p_box->data.p_tkhd->i_matrix[0], p_box->data.p_tkhd->i_matrix[1], p_box->data.p_tkhd->i_matrix[2], @@ -1665,8 +1665,8 @@ static int MP4_ReadBox_sample_soun( stream_t *p_stream, MP4_Box_t *p_box ) memcpy( &f_sample_rate, &dummy, 8 ); msg_Dbg( p_stream, "read box: %f Hz", f_sample_rate ); -p_box->data.p_sample_soun->i_sampleratehi = (int)f_sample_rate % 65536; -p_box->data.p_sample_soun->i_sampleratelo = f_sample_rate / 65536; +p_box->data.p_sample_soun->i_sampleratehi = (int)f_sample_rate % BLOCK16x16; +p_box->data.p_sample_soun->i_sampleratelo = f_sample_rate / BLOCK16x16; MP4_GET4BYTES( i_channel ); p_box->data.p_sample_soun->i_channelcount = i_channel; @@ -1712,7 +1712,7 @@ static int MP4_ReadBox_sample_soun( stream_t *p_stream, MP4_Box_t *p_box ) p_box->data.p_sample_soun->i_channelcount, p_box->data.p_sample_soun->i_samplesize, (float)p_box->data.p_sample_soun->i_sampleratehi + - (float)p_box->data.p_sample_soun->i_sampleratelo / 65536 ); + (float)p_box->data.p_sample_soun->i_sampleratelo / BLOCK16x16 ); #endif MP4_READBOX_EXIT( 1 ); diff --git a/modules/demux/mp4/libmp4.h b/modules/demux/mp4/libmp4.h index aac5e3f..8990311 100644 --- a/modules/demux/mp4/libmp4.h +++ b/modules/demux/mp4/libmp4.h @@ -25,6 +25,8 @@ #include +#define BLOCK16x16 (1<<16) + #define ATOM_root VLC_FOURCC( 'r', 'o', 'o', 't' ) #define ATOM_uuid VLC_FOURCC( 'u', 'u', 'i', 'd' ) diff --git a/modules/demux/mp4/mp4.c b/modules/demux/mp4/mp4.c index 1beb50a..10a2ae8 100644 --- a/modules/demux/mp4/mp4.c +++ b/modules/demux/mp4/mp4.c @@ -2607,8 +2607,8 @@ static void MP4_TrackCreate( demux_t *p_demux, mp4_track_t *p_track, p_track->i_track_ID = p_tkhd->data.p_tkhd->i_track_ID; -p_track->i_width = p_tkhd->data.p_tkhd->i_width / 65536; -p_track->i_height = p_tkhd->data.p_tkhd->i_height / 65536; +p_track->i_width = p_tkhd->data.p_tkhd->i_width / BLOCK16x16; +p_track->i_height = p_tkhd->data.p_tkhd->i_height / BLOCK16x16; p_track->f_rotation = p_tkhd->data.p_tkhd->f_rotation; if( p_tref ) ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] demux: mp4: use CLOCK_FREQ
vlc | branch: master | Francois Cartegnie | Fri Apr 4 08:30:15 2014 +0200| [2f0a363d77c25002383deb7aaf031687be76e4b2] | committer: Francois Cartegnie demux: mp4: use CLOCK_FREQ > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2f0a363d77c25002383deb7aaf031687be76e4b2 --- modules/demux/mp4/mp4.c | 32 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/modules/demux/mp4/mp4.c b/modules/demux/mp4/mp4.c index de1d749..1beb50a 100644 --- a/modules/demux/mp4/mp4.c +++ b/modules/demux/mp4/mp4.c @@ -158,7 +158,7 @@ static inline int64_t MP4_TrackGetDTS( demux_t *p_demux, mp4_track_t *p_track ) if( i_dts < 0 ) i_dts = 0; } -return INT64_C(100) * i_dts / p_track->i_timescale; +return CLOCK_FREQ * i_dts / p_track->i_timescale; } static inline int64_t MP4_TrackGetPTSDelta( demux_t *p_demux, mp4_track_t *p_track ) @@ -179,7 +179,7 @@ static inline int64_t MP4_TrackGetPTSDelta( demux_t *p_demux, mp4_track_t *p_tra for( i_index = 0;; i_index++ ) { if( i_sample < ck->p_sample_count_pts[i_index] ) -return ck->p_sample_offset_pts[i_index] * INT64_C(100) / +return ck->p_sample_offset_pts[i_index] * CLOCK_FREQ / (int64_t)p_track->i_timescale; i_sample -= ck->p_sample_count_pts[i_index]; @@ -188,7 +188,7 @@ static inline int64_t MP4_TrackGetPTSDelta( demux_t *p_demux, mp4_track_t *p_tra static inline int64_t MP4_GetMoviePTS(demux_sys_t *p_sys ) { -return INT64_C(100) * p_sys->i_time / p_sys->i_timescale; +return CLOCK_FREQ * p_sys->i_time / p_sys->i_timescale; } static void LoadChapter( demux_t *p_demux ); @@ -692,7 +692,7 @@ static int Demux( demux_t *p_demux ) p_sys->i_time += __MAX( p_sys->i_timescale / 10 , 1 ); if( p_sys->i_timescale > 0 ) { -int64_t i_length = (mtime_t)100 * +int64_t i_length = CLOCK_FREQ * (mtime_t)p_sys->i_duration / (mtime_t)p_sys->i_timescale; if( MP4_GetMoviePTS( p_sys ) >= i_length ) @@ -832,7 +832,7 @@ static int Seek( demux_t *p_demux, mtime_t i_date ) unsigned int i_track; /* First update global time */ -p_sys->i_time = i_date * p_sys->i_timescale / 100; +p_sys->i_time = i_date * p_sys->i_timescale / CLOCK_FREQ; p_sys->i_pcr = VLC_TS_INVALID; /* Now for each stream try to go to this time */ @@ -914,7 +914,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args ) } else if( p_sys->i_timescale > 0 ) { -i64 = (int64_t)( f * (double)100 * +i64 = (int64_t)( f * CLOCK_FREQ * (double)p_sys->i_duration / (double)p_sys->i_timescale ); return Seek( p_demux, i64 ); @@ -925,7 +925,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args ) pi64 = (int64_t*)va_arg( args, int64_t * ); if( p_sys->i_timescale > 0 ) { -*pi64 = (mtime_t)100 * +*pi64 = CLOCK_FREQ * (mtime_t)p_sys->i_time / (mtime_t)p_sys->i_timescale; } @@ -940,7 +940,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args ) pi64 = (int64_t*)va_arg( args, int64_t * ); if( p_sys->i_timescale > 0 ) { -*pi64 = (mtime_t)100 * +*pi64 = CLOCK_FREQ * (mtime_t)p_sys->i_duration / (mtime_t)p_sys->i_timescale; } @@ -1343,7 +1343,7 @@ static void LoadChapter( demux_t *p_demux ) /* Add duration if titles are enabled */ if( p_sys->p_title ) { -p_sys->p_title->i_length = (uint64_t)100 * +p_sys->p_title->i_length = CLOCK_FREQ * (uint64_t)p_sys->i_duration / (uint64_t)p_sys->i_timescale; } } @@ -2381,11 +2381,11 @@ static int TrackTimeToSampleChunk( demux_t *p_demux, mp4_track_t *p_track, if( p_track->p_elst && p_track->p_elst->data.p_elst->i_entry_count > 0 ) { MP4_Box_data_elst_t *elst = p_track->p_elst->data.p_elst; -int64_t i_mvt= i_start * p_sys->i_timescale / (int64_t)100; +int64_t i_mvt= i_start * p_sys->i_timescale / CLOCK_FREQ; /* now calculate i_start for this elst */ /* offset */ -i_start -= p_track->i_elst_time * INT64_C(100) / p_sys->i_timescale; +i_start -= p_track->i_elst_time * CLOCK_FREQ / p_sys->i_timescale; if( i_start < 0 ) { *pi_chunk = 0; @@ -2394,7 +2394,7 @@ static int TrackTimeToSampleChunk( demux_t *p_demux, mp4_track_t *p_track, return VLC_SUCCESS; } /* to track time scale */ -i_start = i_start
[vlc-commits] demux: mkv: fix warning & int overflow
vlc | branch: master | Francois Cartegnie | Fri Apr 4 08:50:12 2014 +0200| [6dff8ffd6c4457e6619a004b23284f5a06a76882] | committer: Francois Cartegnie demux: mkv: fix warning & int overflow > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6dff8ffd6c4457e6619a004b23284f5a06a76882 --- modules/demux/mkv/util.cpp |8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/demux/mkv/util.cpp b/modules/demux/mkv/util.cpp index 326f631..9608b95 100644 --- a/modules/demux/mkv/util.cpp +++ b/modules/demux/mkv/util.cpp @@ -188,12 +188,12 @@ void handle_real_audio(demux_t * p_demux, mkv_track_t * p_tk, block_t * p_blk, m if( p_tk->fmt.i_codec == VLC_CODEC_COOK || p_tk->fmt.i_codec == VLC_CODEC_ATRAC3 ) { -const uint32_t i_num = p_sys->i_frame_size / p_sys->i_subpacket_size; -const int y = p_sys->i_subpacket / ( p_sys->i_frame_size / p_sys->i_subpacket_size ); +const uint16_t i_num = p_sys->i_frame_size / p_sys->i_subpacket_size; +const size_t y = p_sys->i_subpacket / ( p_sys->i_frame_size / p_sys->i_subpacket_size ); -for( int i = 0; i < i_num; i++ ) +for( uint16_t i = 0; i < i_num; i++ ) { -int i_index = p_sys->i_sub_packet_h * i + +size_t i_index = (size_t) p_sys->i_sub_packet_h * i + ((p_sys->i_sub_packet_h + 1) / 2) * (y&1) + (y>>1); if( i_index >= p_sys->i_subpackets ) return; ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] Qt: don't allow empty file on convert dialog (fix #11072)
vlc | branch: master | Francois Cartegnie | Fri Apr 4 08:14:05 2014 +0200| [64c4b59ca7c5908cf16d21d3c6afbd9284bc7ce8] | committer: Francois Cartegnie Qt: don't allow empty file on convert dialog (fix #11072) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=64c4b59ca7c5908cf16d21d3c6afbd9284bc7ce8 --- modules/gui/qt4/dialogs/convert.cpp | 10 +- modules/gui/qt4/dialogs/convert.hpp |3 +++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/gui/qt4/dialogs/convert.cpp b/modules/gui/qt4/dialogs/convert.cpp index 62cf840..2674928 100644 --- a/modules/gui/qt4/dialogs/convert.cpp +++ b/modules/gui/qt4/dialogs/convert.cpp @@ -105,7 +105,7 @@ ConvertDialog::ConvertDialog( QWidget *parent, intf_thread_t *_p_intf, mainLayout->addWidget( settingBox, 1, 0, 1, -1 ); /* Buttons */ -QPushButton *okButton = new QPushButton( qtr( "&Start" ) ); +okButton = new QPushButton( qtr( "&Start" ) ); QPushButton *cancelButton = new QPushButton( qtr( "&Cancel" ) ); QDialogButtonBox *buttonBox = new QDialogButtonBox; @@ -121,6 +121,9 @@ ConvertDialog::ConvertDialog( QWidget *parent, intf_thread_t *_p_intf, CONNECT( convertRadio, toggled(bool), convertPanel, setEnabled(bool) ); CONNECT(profile, optionsChanged(), this, setDestinationFileExtension()); CONNECT(fileLine, editingFinished(), this, setDestinationFileExtension()); +CONNECT(fileLine, textChanged(const QString&), this, validate()); + +validate(); } void ConvertDialog::fileBrowse() @@ -182,3 +185,8 @@ void ConvertDialog::setDestinationFileExtension() } } } + +void ConvertDialog::validate() +{ +okButton->setEnabled( !fileLine->text().isEmpty() ); +} diff --git a/modules/gui/qt4/dialogs/convert.hpp b/modules/gui/qt4/dialogs/convert.hpp index a2e8296..c2b6a38 100644 --- a/modules/gui/qt4/dialogs/convert.hpp +++ b/modules/gui/qt4/dialogs/convert.hpp @@ -29,6 +29,7 @@ class QLineEdit; class QCheckBox; class QRadioButton; +class QPushButton; class VLCProfileSelector; class ConvertDialog : public QVLCDialog @@ -45,6 +46,7 @@ private: QCheckBox *displayBox, *deinterBox; QRadioButton *dumpRadio; +QPushButton *okButton; VLCProfileSelector *profile; QString mrl; private slots: @@ -52,6 +54,7 @@ private slots: virtual void cancel(); void fileBrowse(); void setDestinationFileExtension(); +void validate(); }; #endif ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] rawvideo: fix vflipped bitmap packetization
vlc | branch: master | Rémi Denis-Courmont | Thu Apr 3 23:56:00 2014 +0300| [1e697c0ea32491cd07cb057be123371dc8949154] | committer: Rémi Denis-Courmont rawvideo: fix vflipped bitmap packetization > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=1e697c0ea32491cd07cb057be123371dc8949154 --- modules/codec/rawvideo.c |1 + 1 file changed, 1 insertion(+) diff --git a/modules/codec/rawvideo.c b/modules/codec/rawvideo.c index 3d68afb..c364059 100644 --- a/modules/codec/rawvideo.c +++ b/modules/codec/rawvideo.c @@ -338,6 +338,7 @@ static block_t *SendFrame( decoder_t *p_dec, block_t *p_block ) } } block_Release( p_block ); +p_block = out; } return p_block; ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] rawvideo: avoid casting function pointers
vlc | branch: master | Rémi Denis-Courmont | Thu Apr 3 23:56:27 2014 +0300| [470602d5cfc6b1069ab2a0591271345b9550d7d0] | committer: Rémi Denis-Courmont rawvideo: avoid casting function pointers > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=470602d5cfc6b1069ab2a0591271345b9550d7d0 --- modules/codec/rawvideo.c | 115 +- 1 file changed, 53 insertions(+), 62 deletions(-) diff --git a/modules/codec/rawvideo.c b/modules/codec/rawvideo.c index c364059..331c216 100644 --- a/modules/codec/rawvideo.c +++ b/modules/codec/rawvideo.c @@ -37,9 +37,6 @@ */ struct decoder_sys_t { -/* Module mode */ -bool b_packetizer; - /* * Input properties */ @@ -60,12 +57,7 @@ struct decoder_sys_t / static int OpenDecoder ( vlc_object_t * ); static int OpenPacketizer( vlc_object_t * ); -static void CloseDecoder ( vlc_object_t * ); - -static void *DecodeBlock ( decoder_t *, block_t ** ); - -static picture_t *DecodeFrame( decoder_t *, block_t * ); -static block_t *SendFrame ( decoder_t *, block_t * ); +static void CloseCommon ( vlc_object_t * ); /* * Module descriptor @@ -75,21 +67,19 @@ vlc_module_begin () set_capability( "decoder", 50 ) set_category( CAT_INPUT ) set_subcategory( SUBCAT_INPUT_VCODEC ) -set_callbacks( OpenDecoder, CloseDecoder ) +set_callbacks( OpenDecoder, CloseCommon ) add_submodule () set_description( N_("Pseudo raw video packetizer") ) set_capability( "packetizer", 100 ) -set_callbacks( OpenPacketizer, CloseDecoder ) +set_callbacks( OpenPacketizer, CloseCommon ) vlc_module_end () -/* - * OpenDecoder: probe the decoder and return score - */ -static int OpenDecoder( vlc_object_t *p_this ) +/** + * Common initialization for decoder and packetizer + */ +static int OpenCommon( decoder_t *p_dec ) { -decoder_t *p_dec = (decoder_t*)p_this; - const vlc_chroma_description_t *dsc = vlc_fourcc_GetChromaDescription( p_dec->fmt_in.i_codec ); if( dsc == NULL || dsc->plane_count == 0 ) @@ -144,27 +134,10 @@ static int OpenDecoder( vlc_object_t *p_this ) p_sys->size += pitch * lines; } -/* Set callbacks */ -p_dec->pf_decode_video = (picture_t *(*)(decoder_t *, block_t **)) -DecodeBlock; -p_dec->pf_packetize= (block_t *(*)(decoder_t *, block_t **)) -DecodeBlock; p_dec->p_sys = p_sys; - return VLC_SUCCESS; } -static int OpenPacketizer( vlc_object_t *p_this ) -{ -decoder_t *p_dec = (decoder_t*)p_this; - -int i_ret = OpenDecoder( p_this ); - -if( i_ret == VLC_SUCCESS ) p_dec->p_sys->b_packetizer = true; - -return i_ret; -} - / * DecodeBlock: the whole thing @@ -173,13 +146,11 @@ static int OpenPacketizer( vlc_object_t *p_this ) static void *DecodeBlock( decoder_t *p_dec, block_t **pp_block ) { decoder_sys_t *p_sys = p_dec->p_sys; -block_t *p_block; -void *p_buf; - -if( !pp_block || !*pp_block ) return NULL; -p_block = *pp_block; +if( pp_block == NULL || *pp_block == NULL ) +return NULL; +block_t *p_block = *pp_block; if( p_block->i_pts <= VLC_TS_INVALID && p_block->i_dts <= VLC_TS_INVALID && !date_Get( &p_sys->pts ) ) @@ -212,20 +183,8 @@ static void *DecodeBlock( decoder_t *p_dec, block_t **pp_block ) return NULL; } -if( p_sys->b_packetizer ) -{ -p_buf = SendFrame( p_dec, p_block ); -} -else -{ -p_buf = DecodeFrame( p_dec, p_block ); -} - -/* Date management: 1 frame per packet */ -date_Increment( &p_sys->pts, 1 ); *pp_block = NULL; - -return p_buf; +return p_block; } /* @@ -272,14 +231,17 @@ static void FillPicture( decoder_t *p_dec, block_t *p_block, picture_t *p_pic ) /* * DecodeFrame: decodes a video frame. */ -static picture_t *DecodeFrame( decoder_t *p_dec, block_t *p_block ) +static picture_t *DecodeFrame( decoder_t *p_dec, block_t **pp_block ) { +block_t *p_block = DecodeBlock( p_dec, pp_block ); +if( p_block == NULL ) +return NULL; + decoder_sys_t *p_sys = p_dec->p_sys; -picture_t *p_pic; /* Get a new picture */ -p_pic = deco
[vlc-commits] codec: tx3g: missing braces
vlc | branch: master | Francois Cartegnie | Thu Apr 3 20:23:16 2014 +0200| [ced162370d030c6c3bb0cdfe28deb129ddea9b62] | committer: Francois Cartegnie codec: tx3g: missing braces refs c3c6e9b81d34ab970ccc9bb22f960558acb31cb8 > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ced162370d030c6c3bb0cdfe28deb129ddea9b62 --- modules/codec/substx3g.c | 11 --- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/codec/substx3g.c b/modules/codec/substx3g.c index b542ffc..cce2491 100644 --- a/modules/codec/substx3g.c +++ b/modules/codec/substx3g.c @@ -262,12 +262,17 @@ static subpicture_t *Decode( decoder_t *p_dec, block_t **pp_block ) if ( i_psz_bytelength > 2 && ( !memcmp( p_pszstart, "\xFE\xFF", 2 ) || !memcmp( p_pszstart, "\xFF\xFE", 2 ) ) ) +{ psz_subtitle = FromCharset( "UTF-16", p_pszstart, i_psz_bytelength ); +if ( !psz_subtitle ) return NULL; +} else +{ psz_subtitle = malloc( i_psz_bytelength + 1 ); -if ( !psz_subtitle ) return NULL; -memcpy( psz_subtitle, p_pszstart, i_psz_bytelength ); -psz_subtitle[ i_psz_bytelength ] = '\0'; +if ( !psz_subtitle ) return NULL; +memcpy( psz_subtitle, p_pszstart, i_psz_bytelength ); +psz_subtitle[ i_psz_bytelength ] = '\0'; +} p_buf += i_psz_bytelength + sizeof(uint16_t); for( uint16_t i=0; i < i_psz_bytelength; i++ ) ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] substx3g: Allow multiple simultanious face styles
vlc | branch: master | John Stebbins | Thu Apr 3 11:08:02 2014 -0600| [2f966bd6edebb262b4e5e0977d84c9737e8043c1] | committer: Francois Cartegnie substx3g: Allow multiple simultanious face styles Signed-off-by: Francois Cartegnie > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2f966bd6edebb262b4e5e0977d84c9737e8043c1 --- modules/codec/substx3g.c |4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/codec/substx3g.c b/modules/codec/substx3g.c index a735f45..b542ffc 100644 --- a/modules/codec/substx3g.c +++ b/modules/codec/substx3g.c @@ -80,9 +80,9 @@ static int ConvertFlags( int i_atomflags ) int i_vlcstyles_flags = 0; if ( i_atomflags & FONT_FACE_BOLD ) i_vlcstyles_flags |= STYLE_BOLD; -else if ( i_atomflags & FONT_FACE_ITALIC ) +if ( i_atomflags & FONT_FACE_ITALIC ) i_vlcstyles_flags |= STYLE_ITALIC; -else if ( i_atomflags & FONT_FACE_UNDERLINE ) +if ( i_atomflags & FONT_FACE_UNDERLINE ) i_vlcstyles_flags |= STYLE_UNDERLINE; return i_vlcstyles_flags; } ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] demux: mp4: handle in sample text encoding (fix #11137)
vlc | branch: master | Francois Cartegnie | Thu Apr 3 18:14:57 2014 +0200| [c3c6e9b81d34ab970ccc9bb22f960558acb31cb8] | committer: Francois Cartegnie demux: mp4: handle in sample text encoding (fix #11137) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=c3c6e9b81d34ab970ccc9bb22f960558acb31cb8 --- modules/codec/substx3g.c | 24 modules/demux/mp4/mp4.c |1 - 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/modules/codec/substx3g.c b/modules/codec/substx3g.c index 4d26b9c..a735f45 100644 --- a/modules/codec/substx3g.c +++ b/modules/codec/substx3g.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "substext.h" @@ -255,14 +256,21 @@ static subpicture_t *Decode( decoder_t *p_dec, block_t **pp_block ) uint8_t *p_buf = p_block->p_buffer; /* Read our raw string and create the styled segment for HTML */ -uint16_t i_psz_length = GetWBE( p_buf ); -char *psz_subtitle = malloc( i_psz_length + 1 ); +uint16_t i_psz_bytelength = GetWBE( p_buf ); +const uint8_t *p_pszstart = p_block->p_buffer + sizeof(uint16_t); +char *psz_subtitle; +if ( i_psz_bytelength > 2 && + ( !memcmp( p_pszstart, "\xFE\xFF", 2 ) || !memcmp( p_pszstart, "\xFF\xFE", 2 ) ) + ) +psz_subtitle = FromCharset( "UTF-16", p_pszstart, i_psz_bytelength ); +else +psz_subtitle = malloc( i_psz_bytelength + 1 ); if ( !psz_subtitle ) return NULL; -memcpy( psz_subtitle, p_block->p_buffer + sizeof(uint16_t), i_psz_length ); -psz_subtitle[ i_psz_length ] = '\0'; -p_buf += i_psz_length + sizeof(uint16_t); +memcpy( psz_subtitle, p_pszstart, i_psz_bytelength ); +psz_subtitle[ i_psz_bytelength ] = '\0'; +p_buf += i_psz_bytelength + sizeof(uint16_t); -for( uint16_t i=0; i < i_psz_length; i++ ) +for( uint16_t i=0; i < i_psz_bytelength; i++ ) if ( psz_subtitle[i] == '\r' ) psz_subtitle[i] = '\n'; segment_t *p_segment = calloc( 1, sizeof(segment_t) ); @@ -317,8 +325,8 @@ static subpicture_t *Decode( decoder_t *p_dec, block_t **pp_block ) while( i_cur_record++ < i_nbrecords ) { if ( (size_t)(p_buf - p_block->p_buffer) < 12 ) break; -uint16_t i_start = __MIN( GetWBE(p_buf), i_psz_length - 1 ); -uint16_t i_end = __MIN( GetWBE(p_buf + 2), i_psz_length - 1 ); +uint16_t i_start = __MIN( GetWBE(p_buf), i_psz_bytelength - 1 ); +uint16_t i_end = __MIN( GetWBE(p_buf + 2), i_psz_bytelength - 1 ); segment_style_t style; style.i_flags = ConvertFlags( p_buf[6] ); diff --git a/modules/demux/mp4/mp4.c b/modules/demux/mp4/mp4.c index e63a3f0..de1d749 100644 --- a/modules/demux/mp4/mp4.c +++ b/modules/demux/mp4/mp4.c @@ -2001,7 +2001,6 @@ static int TrackCreateES( demux_t *p_demux, mp4_track_t *p_track, } p_track->fmt.subs.p_style = p_style; } -/* FIXME: Not true, could be UTF-16 with a Byte Order Mark (0xfeff) */ /* FIXME UTF-8 doesn't work here ? */ if( p_track->b_mac_encoding ) p_track->fmt.subs.psz_encoding = strdup( "MAC" ); ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] codec: tx3g: handle utf8 (fix #11138)
vlc | branch: master | Francois Cartegnie | Thu Apr 3 17:52:39 2014 +0200| [edb0f284e4348469ce9f9d4fa64537ae78971fd0] | committer: Francois Cartegnie codec: tx3g: handle utf8 (fix #11138) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=edb0f284e4348469ce9f9d4fa64537ae78971fd0 --- modules/codec/substx3g.c | 44 +--- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/modules/codec/substx3g.c b/modules/codec/substx3g.c index 4464b89..4d26b9c 100644 --- a/modules/codec/substx3g.c +++ b/modules/codec/substx3g.c @@ -86,6 +86,36 @@ static int ConvertFlags( int i_atomflags ) return i_vlcstyles_flags; } +static size_t str8len( const char *psz_string ) +{ +const char *psz_tmp = psz_string; +size_t i=0; +while ( *psz_tmp ) +{ +if ( (*psz_tmp & 0xC0) != 0x80 ) i++; +psz_tmp++; +} +return i; +} + +static char * str8indup( const char *psz_string, size_t i_skip, size_t n ) +{ +while( i_skip && *psz_string ) +{ +if ( (*psz_string & 0xC0) != 0x80 ) i_skip--; +psz_string++; +} +if ( ! *psz_string || i_skip ) return NULL; + +const char *psz_tmp = psz_string; +while( n && *psz_tmp ) +{ +if ( (*psz_tmp & 0xC0) != 0x80 ) n--; +psz_tmp++; +} +return strndup( psz_string, psz_tmp - psz_string ); +} + static void SegmentDoSplit( segment_t *p_segment, uint16_t i_start, uint16_t i_end, segment_t **pp_segment_left, segment_t **pp_segment_middle, @@ -104,23 +134,23 @@ static void SegmentDoSplit( segment_t *p_segment, uint16_t i_start, uint16_t i_e p_segment_left = calloc( 1, sizeof(segment_t) ); if ( !p_segment_left ) goto error; memcpy( &p_segment_left->styles, &p_segment->styles, sizeof(segment_style_t) ); -p_segment_left->psz_string = strndup( p_segment->psz_string, i_start ); -p_segment_left->i_size = strlen( p_segment_left->psz_string ); +p_segment_left->psz_string = str8indup( p_segment->psz_string, 0, i_start ); +p_segment_left->i_size = str8len( p_segment_left->psz_string ); } p_segment_middle = calloc( 1, sizeof(segment_t) ); if ( !p_segment_middle ) goto error; memcpy( &p_segment_middle->styles, &p_segment->styles, sizeof(segment_style_t) ); -p_segment_middle->psz_string = strndup( p_segment->psz_string + i_start, i_end - i_start + 1 ); -p_segment_middle->i_size = strlen( p_segment_middle->psz_string ); +p_segment_middle->psz_string = str8indup( p_segment->psz_string, i_start, i_end - i_start + 1 ); +p_segment_middle->i_size = str8len( p_segment_middle->psz_string ); if ( i_end < (p_segment->i_size - 1) ) { p_segment_right = calloc( 1, sizeof(segment_t) ); if ( !p_segment_right ) goto error; memcpy( &p_segment_right->styles, &p_segment->styles, sizeof(segment_style_t) ); -p_segment_right->psz_string = strndup( p_segment->psz_string + i_end + 1, p_segment->i_size - i_end - 1 ); -p_segment_right->i_size = strlen( p_segment_right->psz_string ); +p_segment_right->psz_string = str8indup( p_segment->psz_string, i_end + 1, p_segment->i_size - i_end - 1 ); +p_segment_right->i_size = str8len( p_segment_right->psz_string ); } if ( p_segment_left ) p_segment_left->p_next = p_segment_middle; @@ -242,7 +272,7 @@ static subpicture_t *Decode( decoder_t *p_dec, block_t **pp_block ) return NULL; } p_segment->psz_string = strdup( psz_subtitle ); -p_segment->i_size = strlen( psz_subtitle ); +p_segment->i_size = str8len( psz_subtitle ); if ( p_dec->fmt_in.subs.p_style ) { p_segment->styles.i_color = p_dec->fmt_in.subs.p_style->i_font_color; ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] android: fix green line issue when using an YUV surface in SW mode.
vlc | branch: master | Felix Abecassis | Thu Apr 3 19:33:57 2014 +0200| [a5d9020b282d107e76259748f428ba93e34eca4f] | committer: Felix Abecassis android: fix green line issue when using an YUV surface in SW mode. The padding lines introduced by avcodec for direct rendering are set to black since they might be used by Android during rescaling. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a5d9020b282d107e76259748f428ba93e34eca4f --- modules/video_output/android/surface.c |7 +++ 1 file changed, 7 insertions(+) diff --git a/modules/video_output/android/surface.c b/modules/video_output/android/surface.c index 8325fe5..bc51913 100644 --- a/modules/video_output/android/surface.c +++ b/modules/video_output/android/surface.c @@ -329,6 +329,13 @@ static void SetupPictureYV12( SurfaceInfo* p_surfaceInfo, picture_t *p_picture ) p->p_pixels = o->p_pixels + o->i_lines * o->i_pitch; p->i_pitch = i_c_stride; p->i_lines = p_picture->format.i_height / 2; +/* + Explicitly set the padding lines of the picture to black (127 for YUV) + since they might be used by Android during rescaling. +*/ +int visible_lines = p_picture->format.i_visible_height / 2; +if (visible_lines < p->i_lines) +memset(&p->p_pixels[visible_lines * p->i_pitch], 127, (p->i_lines - visible_lines) * p->i_pitch); } if( vlc_fourcc_AreUVPlanesSwapped( p_picture->format.i_chroma, ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] scene: remove unused include
vlc | branch: master | Tristan Matthews | Thu Apr 3 13:32:32 2014 -0400| [360326dbf1a31ebf3f9ac713860550249c89d32e] | committer: Tristan Matthews scene: remove unused include > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=360326dbf1a31ebf3f9ac713860550249c89d32e --- modules/video_filter/scene.c |1 - 1 file changed, 1 deletion(-) diff --git a/modules/video_filter/scene.c b/modules/video_filter/scene.c index 23d2783..3b8ad6f 100644 --- a/modules/video_filter/scene.c +++ b/modules/video_filter/scene.c @@ -35,7 +35,6 @@ #include #include -#include #include #include "filter_picture.h" ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] playlist: log error message on export I/O error
vlc | branch: master | Rémi Denis-Courmont | Thu Apr 3 20:19:35 2014 +0300| [8260ca6f2e439ef55114114212925f1422abf3f1] | committer: Rémi Denis-Courmont playlist: log error message on export I/O error > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8260ca6f2e439ef55114114212925f1422abf3f1 --- src/playlist/loadsave.c |3 +++ 1 file changed, 3 insertions(+) diff --git a/src/playlist/loadsave.c b/src/playlist/loadsave.c index 9471092..605059f 100644 --- a/src/playlist/loadsave.c +++ b/src/playlist/loadsave.c @@ -76,6 +76,9 @@ int playlist_Export( playlist_t * p_playlist, const char *psz_filename, module_unneed( p_export, p_module ); if( !ferror( p_export->p_file ) ) ret = VLC_SUCCESS; +else +msg_Err( p_playlist, "could not write playlist file: %s", + vlc_strerror_c(errno) ); } else msg_Err( p_playlist, "could not export playlist" ); ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] playlist: report playlist export I/O errors (fixes #10087)
vlc | branch: master | Rémi Denis-Courmont | Thu Apr 3 20:16:49 2014 +0300| [31d48b089124a50e76486f8ef6b1fb03936a9bda] | committer: Rémi Denis-Courmont playlist: report playlist export I/O errors (fixes #10087) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=31d48b089124a50e76486f8ef6b1fb03936a9bda --- src/playlist/loadsave.c | 37 - 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/src/playlist/loadsave.c b/src/playlist/loadsave.c index f8298e7..9471092 100644 --- a/src/playlist/loadsave.c +++ b/src/playlist/loadsave.c @@ -45,7 +45,7 @@ int playlist_Export( playlist_t * p_playlist, const char *psz_filename, playlist_export_t *p_export = vlc_custom_create( p_playlist, sizeof( *p_export ), "playlist export" ); -if( !p_export ) +if( unlikely(p_export == NULL) ) return VLC_ENOMEM; msg_Dbg( p_export, "saving %s to file %s", @@ -58,26 +58,29 @@ int playlist_Export( playlist_t * p_playlist, const char *psz_filename, p_export->psz_filename = psz_filename; p_export->p_file = vlc_fopen( psz_filename, "wt" ); if( p_export->p_file == NULL ) +{ msg_Err( p_export, "could not create playlist file %s: %s", psz_filename, vlc_strerror_c(errno) ); -else +goto out; +} + +module_t *p_module; + +/* And call the module ! All work is done now */ +playlist_Lock( p_playlist ); +p_module = module_need( p_export, "playlist export", psz_type, true ); +playlist_Unlock( p_playlist ); + +if( p_module != NULL ) { -module_t *p_module; - -/* And call the module ! All work is done now */ -playlist_Lock( p_playlist ); -p_module = module_need( p_export, "playlist export", psz_type, true ); -playlist_Unlock( p_playlist ); - -if( p_module == NULL ) -msg_Err( p_playlist, "could not export playlist" ); -else -{ -module_unneed( p_export, p_module ); +module_unneed( p_export, p_module ); +if( !ferror( p_export->p_file ) ) ret = VLC_SUCCESS; -} -fclose( p_export->p_file ); - } +} +else +msg_Err( p_playlist, "could not export playlist" ); + fclose( p_export->p_file ); +out: vlc_object_release( p_export ); return ret; } ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] configure: remove gratuitious greeting in error message
vlc | branch: master | Rémi Denis-Courmont | Thu Apr 3 19:39:05 2014 +0300| [9495b3ca984336ecdfbfad7c688b43d3dd44b73e] | committer: Rémi Denis-Courmont configure: remove gratuitious greeting in error message > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9495b3ca984336ecdfbfad7c688b43d3dd44b73e --- configure.ac |4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index c1fe742..4794125 100644 --- a/configure.ac +++ b/configure.ac @@ -3950,10 +3950,10 @@ AS_IF([test "${enable_libgcrypt}" != "no"], [ GCRYPT_CFLAGS="`libgcrypt-config --cflags`" GCRYPT_LIBS="`libgcrypt-config --libs`" ], [ - AC_MSG_ERROR([libgcrypt not found. Install libgcrypt or use --disable-libgcrypt. Have a nice day.]) + AC_MSG_ERROR([libgcrypt not found. Install libgcrypt or pass --disable-libgcrypt.]) ], [`libgcrypt-config --libs`]) ], [ -AC_MSG_ERROR([libgcrypt version 1.1.94 or higher not found. Install libgcrypt or use --disable-libgcrypt. Have a nice day.]) +AC_MSG_ERROR([libgcrypt version 1.1.94 or higher not found. Install libgcrypt or pass --disable-libgcrypt.]) ], [#include ] ) ]) ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] hwaccel: uniformize plugin descriptions
vlc | branch: master | Rémi Denis-Courmont | Thu Apr 3 19:42:49 2014 +0300| [11e571c7b2c0dc8a52443e541787b34aa5b3d6a9] | committer: Rémi Denis-Courmont hwaccel: uniformize plugin descriptions > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=11e571c7b2c0dc8a52443e541787b34aa5b3d6a9 --- modules/codec/avcodec/hwdummy.c |2 +- modules/codec/avcodec/vaapi.c |4 ++-- modules/hw/vdpau/avcodec.c |2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/codec/avcodec/hwdummy.c b/modules/codec/avcodec/hwdummy.c index 9db27d2..eecebae 100644 --- a/modules/codec/avcodec/hwdummy.c +++ b/modules/codec/avcodec/hwdummy.c @@ -39,7 +39,7 @@ static int Open(vlc_va_t *, AVCodecContext *, const es_format_t *); static void Close(vlc_va_t *); vlc_module_begin() -set_description(N_("Dummy video decoding accelerator")) +set_description(N_("Dummy video decoder")) set_capability("hw decoder", 0) set_category(CAT_INPUT) set_subcategory(SUBCAT_INPUT_VCODEC) diff --git a/modules/codec/avcodec/vaapi.c b/modules/codec/avcodec/vaapi.c index 3b7ccc0..ed77a50 100644 --- a/modules/codec/avcodec/vaapi.c +++ b/modules/codec/avcodec/vaapi.c @@ -59,9 +59,9 @@ static void Delete( vlc_va_t * ); vlc_module_begin () #if defined (VLC_VA_BACKEND_XLIB) -set_description( N_("Video Acceleration (VA) API / X11") ) +set_description( N_("VA-API video decoder via X11") ) #elif defined (VLC_VA_BACKEND_DRM) -set_description( N_("Video Acceleration (VA) API / DRM") ) +set_description( N_("VA-API video decoder via DRM") ) #endif set_capability( "hw decoder", 0 ) set_category( CAT_INPUT ) diff --git a/modules/hw/vdpau/avcodec.c b/modules/hw/vdpau/avcodec.c index fa7964e..c87013d 100644 --- a/modules/hw/vdpau/avcodec.c +++ b/modules/hw/vdpau/avcodec.c @@ -42,7 +42,7 @@ static int Open(vlc_va_t *, AVCodecContext *, const es_format_t *); static void Close(vlc_va_t *); vlc_module_begin() -set_description(N_("VDPAU hardware-accelerated decoder")) +set_description(N_("VDPAU video decoder")) set_capability("hw decoder", 100) set_category(CAT_INPUT) set_subcategory(SUBCAT_INPUT_VCODEC) ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] contrib/jpeg: use our own hosting since their servers blocks downloads with curl ( close #11048)
vlc/vlc-2.1 | branch: master | Felix Paul Kühne | Sat Mar 22 15:36:01 2014 +0100| [72e68ec007d1ec55656e204e6debdc25bc0b3a58] | committer: Felix Paul Kühne contrib/jpeg: use our own hosting since their servers blocks downloads with curl (close #11048) wget and mainstream web browsers are not affected. (cherry picked from commit 2e4af36981bdee565172366ef10d7af86ba90077) > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.1.git/?a=commit;h=72e68ec007d1ec55656e204e6debdc25bc0b3a58 --- contrib/src/jpeg/rules.mak |3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib/src/jpeg/rules.mak b/contrib/src/jpeg/rules.mak index 736a4cc..12395b7 100644 --- a/contrib/src/jpeg/rules.mak +++ b/contrib/src/jpeg/rules.mak @@ -1,7 +1,8 @@ # jpeg JPEG_VERSION := 9 -JPEG_URL := http://www.ijg.org/files/jpegsrc.v$(JPEG_VERSION).tar.gz +# JPEG_URL := http://www.ijg.org/files/jpegsrc.v$(JPEG_VERSION).tar.gz +JPEG_URL := http://download.videolan.org/pub/contrib/jpegsrc.v$(JPEG_VERSION).tar.gz $(TARBALLS)/jpegsrc.v$(JPEG_VERSION).tar.gz: $(call download,$(JPEG_URL)) ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] mediacodec: check exceptions after getCapabilitiesForType()
vlc | branch: master | Felix Abecassis | Thu Apr 3 15:37:13 2014 +0200| [14b85712d1ed59aa37c23f07a85c8c694ff73b09] | committer: Felix Abecassis mediacodec: check exceptions after getCapabilitiesForType() Avoid crashing on some devices, but it forces fallback to SW decoding. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=14b85712d1ed59aa37c23f07a85c8c694ff73b09 --- modules/codec/omxil/android_mediacodec.c |6 +- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/codec/omxil/android_mediacodec.c b/modules/codec/omxil/android_mediacodec.c index 951d879..ba70fdc 100644 --- a/modules/codec/omxil/android_mediacodec.c +++ b/modules/codec/omxil/android_mediacodec.c @@ -388,7 +388,11 @@ static int OpenDecoder(vlc_object_t *p_this) (*env)->NewStringUTF(env, mime)); jobject profile_levels = NULL; int profile_levels_len = 0; -if (codec_capabilities) { +if ((*env)->ExceptionOccurred(env)) { +msg_Warn(p_dec, "Exception occurred in MediaCodecInfo.getCapabilitiesForType"); +(*env)->ExceptionClear(env); +break; +} else if (codec_capabilities) { profile_levels = (*env)->GetObjectField(env, codec_capabilities, p_sys->profile_levels_field); if (profile_levels) profile_levels_len = (*env)->GetArrayLength(env, profile_levels); ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits
[vlc-commits] omxil: do not use iomx (Android) for audio decoding
vlc | branch: master | Felix Abecassis | Thu Apr 3 12:18:48 2014 +0200| [f90e9ebc5a95ba65873995540901260233e32f97] | committer: Felix Abecassis omxil: do not use iomx (Android) for audio decoding > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f90e9ebc5a95ba65873995540901260233e32f97 --- modules/codec/omxil/omxil.c |5 + 1 file changed, 5 insertions(+) diff --git a/modules/codec/omxil/omxil.c b/modules/codec/omxil/omxil.c index e3e34c4..6298cdc 100644 --- a/modules/codec/omxil/omxil.c +++ b/modules/codec/omxil/omxil.c @@ -780,6 +780,11 @@ static int OpenDecoder( vlc_object_t *p_this ) decoder_t *p_dec = (decoder_t*)p_this; int status; +#ifdef __ANDROID__ +if( p_dec->fmt_in.i_cat == AUDIO_ES ) +return VLC_EGENERIC; +#endif + if( 0 || !GetOmxRole(p_dec->fmt_in.i_codec, p_dec->fmt_in.i_cat, false) ) return VLC_EGENERIC; ___ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits