From patchwork Sat Sep 1 08:14:53 2007 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Reinhard Nissl X-Patchwork-Id: 12522 Received: from mail.gmx.net ([213.165.64.20]) by www.linuxtv.org with smtp (Exim 4.63) (envelope-from ) id 1IRO8b-000368-4V for vdr@linuxtv.org; Sat, 01 Sep 2007 10:15:25 +0200 Received: (qmail invoked by alias); 01 Sep 2007 08:14:54 -0000 Received: from p54930859.dip0.t-ipconnect.de (EHLO [192.168.101.15]) [84.147.8.89] by mail.gmx.net (mp041) with SMTP; 01 Sep 2007 10:14:54 +0200 X-Authenticated: #527675 X-Provags-ID: V01U2FsdGVkX18tXuY39fMtkrwua+boEl3BUhqaFlWppU76umP4q1 DTPmVXTSRAFprT Message-ID: <46D91F7D.4040107@gmx.de> Date: Sat, 01 Sep 2007 10:14:53 +0200 From: Reinhard Nissl User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20060911 SUSE/1.5.0.12-3.4 Thunderbird/1.5.0.12 Mnenhy/0.7.4.666 MIME-Version: 1.0 To: VDR Mailing List References: <46D4A316.8090409@gmx.de> <3e063bbf0708310232k647576advb447b8b69ab04ddc@mail.gmail.com> <46D85CE8.2050805@gmx.de> <1188585260.31994.12.camel@core> <46D86B37.3020701@gmx.de> <46D86C34.80506@gmx.de> <46D88CEF.6020605@googlemail.com> <46D893AC.7070203@gmx.de> <46D910B8.9000700@googlemail.com> In-Reply-To: <46D910B8.9000700@googlemail.com> X-Y-GMX-Trusted: 0 Subject: Re: [vdr] [ANNOUNCE] H.264 updates for VDR-1.5.9 X-BeenThere: vdr@linuxtv.org X-Mailman-Version: 2.1.9 Precedence: list Reply-To: VDR Mailing List List-Id: VDR Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 01 Sep 2007 08:15:25 -0000 Status: O X-Status: X-Keywords: X-UID: 13994 Hi, Petri Helin wrote: >>> I am now also able to record h.264 encoded programs, just like mpeg2 >>> encoded, and as a result xxx.vdr files are created. But still, i cannot >>> replay them either. >> >> Stock xine-lib-1.1.7 or higher can play those files. You may also want >> to use vdr-xine-0.7.11 with a patched xine-lib-1.1.8 or stock xine-lib-1.2. > > Yes, I have now tried with the current xine-lib (1.1-branch) from > mercury and I can actually play the 001.vdr file. Nice! Yesterday I just > hastily tested with mplayer. Sure, it's odd that mplayer cannot play such 001.vdr files at the moment. I already had a look into mplayer's source and discovered why mplayer chose the wrong codec, but I'm still waiting for someone else to fix this issue. Digging around in the hardly known code of FFmpeg and now also mplayer plus creating patches eats a lot of time. >> NOTE: be aware that FFmpeg doesn't support interlaced streams properly >> at the moment. It typically crashes after a few frames. In my >> xine-lib.patch for xine-lib-1.1.8 I've therefore disabled decoding of >> interlaced frames (more or less properly). > > Xine does not crash, but the playback is really slow and there are > "ghost effects" in the picture. Xine puts out this kind of messages all > the time: > > [h264 @ 0xb61168f4]concealing 6960 DC, 6960 AC, 6960 MV errors > video_out: throwing away image with pts 455968 because it's too old > (diff : 574). > video_out: throwing away image with pts 448768 because it's too old > (diff : 7774). > video_out: throwing away image with pts 452368 because it's too old > (diff : 4174). > ffmpeg_video_dec: error decompressing frame > ffmpeg_video_dec: error decompressing frame I get similar messages here. Try to play the stream in slow motion and they should go away. > I have an Intel Core 2 Duo E6300 (1,83GHz) which might not be enough. Do > you have the xine-lib.patch for disabling interlaced frames available > for download somewhere? The attached patch is also part of the larger xine-lib.patch included in vdr-xine-0.7.11.tgz. Bye. diff -r 0f20b6e8ac9d src/libffmpeg/libavcodec/h264.c --- a/src/libffmpeg/libavcodec/h264.c Wed Aug 29 19:58:18 2007 +0200 +++ b/src/libffmpeg/libavcodec/h264.c Sat Sep 01 10:00:43 2007 +0200 @@ -4639,8 +4639,11 @@ static int decode_slice_header(H264Conte s->picture_structure= PICT_FRAME; }else{ if(get_bits1(&s->gb)) { //field_pic_flag - s->picture_structure= PICT_TOP_FIELD + get_bits1(&s->gb); //bottom_field_flag + //s->picture_structure= PICT_TOP_FIELD + get_bits1(&s->gb); //bottom_field_flag av_log(h->s.avctx, AV_LOG_ERROR, "PAFF interlacing is not implemented\n"); + s->avctx->release_buffer(s->avctx, (AVFrame*)s->current_picture_ptr); + s->current_picture_ptr = 0; + return -1; } else { s->picture_structure= PICT_FRAME; h->mb_aff_frame = h->sps.mb_aff; @@ -4696,8 +4699,12 @@ static int decode_slice_header(H264Conte if(h->slice_type == P_TYPE || h->slice_type == SP_TYPE || h->slice_type == B_TYPE){ if(h->slice_type == B_TYPE){ h->direct_spatial_mv_pred= get_bits1(&s->gb); - if(h->sps.mb_aff && h->direct_spatial_mv_pred) + if(h->sps.mb_aff && h->direct_spatial_mv_pred){ av_log(h->s.avctx, AV_LOG_ERROR, "MBAFF + spatial direct mode is not implemented\n"); + s->avctx->release_buffer(s->avctx, (AVFrame*)s->current_picture_ptr); + s->current_picture_ptr = 0; + return -1; + } } num_ref_idx_active_override_flag= get_bits1(&s->gb);