mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-24 11:49:48 +00:00
Merge commit 'b1aacd56685cd131f517e0551834a0bbd3f5f809'
* commit 'b1aacd56685cd131f517e0551834a0bbd3f5f809': mpeg4videodec: move t_frame from MpegEncContext to Mpeg4DecContext Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
0cea39fdd3
@ -70,6 +70,8 @@ typedef struct Mpeg4DecContext {
|
||||
int rvlc;
|
||||
///< could this stream contain resync markers
|
||||
int resync_marker;
|
||||
///< time distance of first I -> B, used for interlaced b frames
|
||||
int t_frame;
|
||||
|
||||
/* bug workarounds */
|
||||
int divx_version;
|
||||
|
@ -1771,7 +1771,7 @@ static int decode_vol_header(Mpeg4DecContext *ctx, GetBitContext *gb)
|
||||
else
|
||||
s->avctx->time_base.num = 1;
|
||||
|
||||
s->t_frame = 0;
|
||||
ctx->t_frame = 0;
|
||||
|
||||
if (ctx->shape != BIN_ONLY_SHAPE) {
|
||||
if (ctx->shape == RECT_SHAPE) {
|
||||
@ -2290,14 +2290,14 @@ static int decode_vop_header(Mpeg4DecContext *ctx, GetBitContext *gb)
|
||||
}
|
||||
ff_mpeg4_init_direct_mv(s);
|
||||
|
||||
if (s->t_frame == 0)
|
||||
s->t_frame = s->pb_time;
|
||||
if (s->t_frame == 0)
|
||||
s->t_frame = 1; // 1/0 protection
|
||||
s->pp_field_time = (ROUNDED_DIV(s->last_non_b_time, s->t_frame) -
|
||||
ROUNDED_DIV(s->last_non_b_time - s->pp_time, s->t_frame)) * 2;
|
||||
s->pb_field_time = (ROUNDED_DIV(s->time, s->t_frame) -
|
||||
ROUNDED_DIV(s->last_non_b_time - s->pp_time, s->t_frame)) * 2;
|
||||
if (ctx->t_frame == 0)
|
||||
ctx->t_frame = s->pb_time;
|
||||
if (ctx->t_frame == 0)
|
||||
ctx->t_frame = 1; // 1/0 protection
|
||||
s->pp_field_time = (ROUNDED_DIV(s->last_non_b_time, ctx->t_frame) -
|
||||
ROUNDED_DIV(s->last_non_b_time - s->pp_time, ctx->t_frame)) * 2;
|
||||
s->pb_field_time = (ROUNDED_DIV(s->time, ctx->t_frame) -
|
||||
ROUNDED_DIV(s->last_non_b_time - s->pp_time, ctx->t_frame)) * 2;
|
||||
if (!s->progressive_sequence) {
|
||||
if (s->pp_field_time <= s->pb_field_time || s->pb_field_time <= 1)
|
||||
return FRAME_SKIPPED;
|
||||
|
@ -623,7 +623,6 @@ typedef struct MpegEncContext {
|
||||
PutBitContext tex_pb; ///< used for data partitioned VOPs
|
||||
PutBitContext pb2; ///< used for data partitioned VOPs
|
||||
int mpeg_quant;
|
||||
int t_frame; ///< time distance of first I -> B, used for interlaced b frames
|
||||
int padding_bug_score; ///< used to detect the VERY common padding bug in MPEG4
|
||||
|
||||
/* divx specific, used to workaround (many) bugs in divx5 */
|
||||
|
Loading…
Reference in New Issue
Block a user