summaryrefslogtreecommitdiffstats
path: root/libmpdemux/muxer_mpeg.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmpdemux/muxer_mpeg.c')
-rw-r--r--libmpdemux/muxer_mpeg.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/libmpdemux/muxer_mpeg.c b/libmpdemux/muxer_mpeg.c
index fe9981b8af..82abd5a569 100644
--- a/libmpdemux/muxer_mpeg.c
+++ b/libmpdemux/muxer_mpeg.c
@@ -1611,7 +1611,8 @@ static int soft_telecine(muxer_priv_t *priv, muxer_headers_t *vpriv, uint8_t *fp
if(se_ptr)
se_ptr[1] &= 0xf7;
- pce_ptr[3] = (pce_ptr[3] & 0xfd) | bff_mask[vpriv->display_frame % MAX_PATTERN_LENGTH];
+ //disable tff and rff and overwrite them with the value in bff_mask
+ pce_ptr[3] = (pce_ptr[3] & 0x7d) | bff_mask[vpriv->display_frame % MAX_PATTERN_LENGTH];
pce_ptr[4] |= 0x80; //sets progressive frame
vpriv->display_frame += n;
@@ -1677,9 +1678,10 @@ static size_t parse_mpeg12_video(muxer_stream_t *s, muxer_priv_t *priv, muxer_he
break;
}
mp_header_process_extension(&(spriv->picture), &(s->buffer[i+4]));
+ if(((s->buffer[i+4] & 0xf0) == 0x10))
+ se_ptr = &(s->buffer[i+4]);
if(((s->buffer[i+4] & 0xf0) == 0x20))
{
- se_ptr = &(s->buffer[i+4]);
if(priv->patch_sde)
patch_panscan(priv, se_ptr);
}