summaryrefslogtreecommitdiffstats
path: root/libhb/encavcodec.c
diff options
context:
space:
mode:
authorjstebbins <[email protected]>2011-03-28 17:47:21 +0000
committerjstebbins <[email protected]>2011-03-28 17:47:21 +0000
commit269d067f6662f2937105d44ba93f2cb49ebc3540 (patch)
tree786444985e0dd8dc5f722939808182e334bb0be5 /libhb/encavcodec.c
parente5689e626605675ab30e8a90989ea353d0543377 (diff)
Fix problem with qt7 playback of mpeg4 video
The reference frames were not being tagged correctly during muxing which really screwes up qt7 but appears to have little effect on qtx or other players. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3887 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'libhb/encavcodec.c')
-rw-r--r--libhb/encavcodec.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/libhb/encavcodec.c b/libhb/encavcodec.c
index a9d567016..0a7d7f62b 100644
--- a/libhb/encavcodec.c
+++ b/libhb/encavcodec.c
@@ -486,6 +486,7 @@ int encavcodecWork( hb_work_object_t * w, hb_buffer_t ** buf_in,
int64_t frameno = pv->context->coded_frame->pts;
buf->start = get_frame_start( pv, frameno );
buf->stop = get_frame_stop( pv, frameno );
+ buf->flags &= ~HB_FRAME_REF;
switch ( pv->context->coded_frame->pict_type )
{
case FF_P_TYPE:
@@ -512,6 +513,7 @@ int encavcodecWork( hb_work_object_t * w, hb_buffer_t ** buf_in,
case FF_SI_TYPE:
case FF_I_TYPE:
{
+ buf->flags |= HB_FRAME_REF;
if ( pv->context->coded_frame->key_frame )
{
buf->frametype = HB_FRAME_IDR;
@@ -525,9 +527,14 @@ int encavcodecWork( hb_work_object_t * w, hb_buffer_t ** buf_in,
default:
{
if ( pv->context->coded_frame->key_frame )
+ {
+ buf->flags |= HB_FRAME_REF;
buf->frametype = HB_FRAME_KEY;
+ }
else
+ {
buf->frametype = HB_FRAME_REF;
+ }
} break;
}
buf = process_delay_list( pv, buf );