<div dir="ltr">Hi Michael,<div><br></div><div>You are parsing the mpeg2 stream by yourself looking for the 0x00 0x00 0x01 0x00 startcode which means that you will only feed the mpeg2 encoded pictures to the decoder.</div><div>This way your program will skip over the sequence headers which may include a lot of important information for the mpeg2 decoder (for example custom intra and non intra quantiser matrices, picture dimensions, aspect ratio,...)</div><div><br></div><div>The ffmpeg mpeg2video codec will try its best to decode the pictures, but with the missing info it may not be fully successful.</div><div>Your PussInBoots file for example, includes custom quantiser matrices which are probably slightly different from the default ones (I did not look in detail).</div><div><br></div><div>My suggestion would be to use libavformat to read the source files. This way you would get correctly parsed AVPacket(s).</div><div><br></div><div>If you for some reason can't use libavformat, you could at least use av_parser_parse2 function to parse the stream for you. (See example here: <a href="https://www.ffmpeg.org/doxygen/trunk/decode_video_8c-example.html">https://www.ffmpeg.org/doxygen/trunk/decode_video_8c-example.html</a>)</div><div><br></div><div>Hope that helps,</div><div>Jaka</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 4 June 2017 at 05:12, Michael Goffioul <span dir="ltr"><<a href="mailto:michael.goffioul@gmail.com" target="_blank">michael.goffioul@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi,<div><br></div><div>I'm trying to use ffmpeg to decode a MPEG2 stream and I'm running into pixelation problem with some streams (not all of them). The fact is that the problematic streams play fine in ffplay (or vlc), so I figured the problem must be in the way I setup the decoder or feed data to it.</div><div><br></div><div>I've written a very simple code to illustrate the problem I'm having, it's available here:</div><div><a href="https://drive.google.com/open?id=0BwljeX6541LuTjlLRmN2bG52M3M" target="_blank">https://drive.google.com/open?<wbr>id=<wbr>0BwljeX6541LuTjlLRmN2bG52M3M</a><br></div><div><br></div><div>It doesn't do anything fancy: just initialize the mpeg2video codec, feed the data (segmented on the picture start code boundary), drain frames, convert to RGB and save as PNG. It accepts 2 arguments: the elementary MPEG2 stream filename and the number of frames to extract.</div><div><br></div><div>I'm using this sample clip as test case, it's the elementary video stream extracted from a MPEG/TS clip (next link):</div><div><a href="https://drive.google.com/open?id=0BwljeX6541LuUFFHSElwaUFGYkE" target="_blank">https://drive.google.com/open?<wbr>id=<wbr>0BwljeX6541LuUFFHSElwaUFGYkE</a><br></div><div><a href="https://drive.google.com/open?id=0BwljeX6541LuamdieXZzamNkNFE" target="_blank">https://drive.google.com/open?<wbr>id=<wbr>0BwljeX6541LuamdieXZzamNkNFE</a><br></div><div><br></div><div>The pixelation problem is illustrated in this extracted frame:</div><div><a href="https://drive.google.com/open?id=0BwljeX6541LubmhkS2VWekc5S00" target="_blank">https://drive.google.com/open?<wbr>id=<wbr>0BwljeX6541LubmhkS2VWekc5S00</a><br></div><div><br></div><div>By comparison, playing the sample clip (elementary stream) with ffplay gives this:</div><div><a href="https://drive.google.com/open?id=0BwljeX6541LuQ0hHQmVZMlAxMmc" target="_blank">https://drive.google.com/open?<wbr>id=<wbr>0BwljeX6541LuQ0hHQmVZMlAxMmc</a><br></div><div><br></div><div>Clearly I must be doing something wrong. Does anybody have a hint or suggestion?</div><div><br></div><div>Thanks,</div><div>Michael.</div><div><br></div></div>
<br>______________________________<wbr>_________________<br>
Libav-user mailing list<br>
<a href="mailto:Libav-user@ffmpeg.org">Libav-user@ffmpeg.org</a><br>
<a href="http://ffmpeg.org/mailman/listinfo/libav-user" rel="noreferrer" target="_blank">http://ffmpeg.org/mailman/<wbr>listinfo/libav-user</a><br>
<br></blockquote></div><br></div>