On Thu, Dec 4, 2014 at 5:27 PM, Michael Niedermayer <michae...@gmx.at> wrote: > > On Thu, Dec 04, 2014 at 01:11:08PM +0100, Erik Johansson wrote: > > Hi, > > > > Setting setting sample_aspect_ratio in AVContext does not produce the > > expected aspect index value in the MPEG2 sequence header. > > > > Problem seems to be around line 263 in mpeg12enc.c. Setting the > > sample_aspect_ratio to 16/9 leads the current error minimization > > routine to determine that > > > > error -= (1LL<<32)*(221/100)*(1080/1920) > > > > is smaller than > > > > error -= (1LL<<32)*(16/9)*(1080/1920) > > > > thus picking aspect index value 4 rather than 3. > > > > Proposed fix in attached patch. > > how can this bug be reproduced ? >
The problem was detected by a client using 'Baton', file based QC software from Interra Systems. In summary, we create the MPEG2 essence as follows: m_avcodec = avcodec_find_encoder(CODEC_ID_MPEG2VIDEO) m_avcontext = avcodec_alloc_context3(m_avcodec) m_avcontext->sample_aspect_ratio = (AVRational){16,9} m_avcontext->width = 1920 m_avcontext->width = 1080 avcodec_encode_video2(m_avcontext, &pkt, m_avframe_yuv, &got_packet) The problem can be seen on subsequent decode by putting a breakpoint in libavcodec/mpeg12dec.c:mpeg_decode_postinit(). s->aspect_ratio_info will have the value 4. ff_mpeg2_aspect[4] which is {221,100}, will then be used in the calculations that follow, rather than the expected {16,9}. I could not immediately see a way to illustrate the issue using the ffmpeg CLI, sorry. // Erik _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel