Dear colleagues,
I need a bit of help with an issue about MPEG-1 decoder. I have been searching through google and forums, but I cannot find an answer.

I've been using ffmpeg for video codecs long time ago, and now I am facing a problem that arosen on 2008, in the review -r11411.
This was a small change, autor name reported as Michael:

----
r11411 | michael | 2008-01-05 02:14:09 +0100 (Sat, 05 Jan 2008) | 2 lines

Drop non key frames before the first key frame.
----


My program performs a small test: take frames from a v4l device, encode them, decode them and draw them. I do not set most of the options of ffmpeg, just bit rate, width, hight, gop_size, ... It works perfectly well for MPEG-4, and it worked for MPEG-1 up to review 11410.

However, the changes from 11410 to 11411 seems very small, file mpeg12.c [enclosed below the output of svn diff]
I got the following message:

[2010/05/19 18:30:32] bad decoded image!!, Bailing out

repeatedly, and from time to time some frames are correctly decoded (and painted).

Could you please help me to understand what is happening? Should I need to set any other options so MPEG-1 is properly decode? BTW, I have been able to send the MPEG-1 over RTP and I have not seen problems in the MPEG-1 encoder (I mean, if I encode MPEG-1 with any version of ffmpeg, it is properly decode with version <= 11410, and worngly decode with version >= 11411)

I hope someone can help me, as I cannot find a clue about the problem,

Thank you very much,

Gabriel Huecas

$ svn diff -r 11410
Index: libavcodec/mpeg12.c
===================================================================
--- libavcodec/mpeg12.c    (revision 11410)
+++ libavcodec/mpeg12.c    (working copy)
@@ -2329,8 +2329,10 @@
               if(s2->last_picture_ptr==NULL){
               /* Skip B-frames if we do not have reference frames. */
                   if(s2->pict_type==B_TYPE) break;
+                }
+                if(s2->next_picture_ptr==NULL){
/* Skip P-frames if we do not have reference frame no valid header. */ -// if(s2->pict_type==P_TYPE && s2->first_field && !s2->first_slice) break; + if(s2->pict_type==P_TYPE && (s2->first_field || s2->picture_structure==PICT_FRAME)) break;
               }
               /* Skip B-frames if we are in a hurry. */
               if(avctx->hurry_up && s2->pict_type==B_TYPE) break;

svn diff, from 11411:



<<attachment: gabriel.vcf>>

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
libav-user mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/libav-user

Reply via email to