Browse Source

using Juanjo's way to pass forced type - especially as I_TYPE/P_TYPE defines aren't exported in the public interface, and the flagged method matches the way as qscale forcing work

Originally committed as revision 366 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Arpi 23 years ago
parent
commit
60e575acc8
2 changed files with 3 additions and 3 deletions
  1. +1
    -2
      libavcodec/avcodec.h
  2. +2
    -1
      libavcodec/mpegvideo.c

+ 1
- 2
libavcodec/avcodec.h View File

@@ -69,6 +69,7 @@ extern int motion_estimation_method;
#define CODEC_FLAG_B 0x0008 /* use B frames */ #define CODEC_FLAG_B 0x0008 /* use B frames */
#define CODEC_FLAG_QPEL 0x0010 /* use qpel MC */ #define CODEC_FLAG_QPEL 0x0010 /* use qpel MC */
#define CODEC_FLAG_GMC 0x0020 /* use GMC */ #define CODEC_FLAG_GMC 0x0020 /* use GMC */
#define CODEC_FLAG_TYPE 0x0040 /* fixed I/P frame type, from avctx->key_frame */


/* codec capabilities */ /* codec capabilities */


@@ -121,8 +122,6 @@ typedef struct AVCodecContext {
int qmax; /* max qscale */ int qmax; /* max qscale */
int max_qdiff; /* max qscale difference between frames */ int max_qdiff; /* max qscale difference between frames */
int force_type; /* 0= no force, otherwise I_TYPE, P_TYPE, ... */

struct AVCodec *codec; struct AVCodec *codec;
void *priv_data; void *priv_data;




+ 2
- 1
libavcodec/mpegvideo.c View File

@@ -514,7 +514,8 @@ int MPV_encode_picture(AVCodecContext *avctx,


init_put_bits(&s->pb, buf, buf_size, NULL, NULL); init_put_bits(&s->pb, buf, buf_size, NULL, NULL);


s->force_type= avctx->force_type;
s->force_type= (avctx->flags&CODEC_FLAG_TYPE) ?
(avctx->key_frame ? I_TYPE : P_TYPE) : 0;
if (!s->intra_only) { if (!s->intra_only) {
/* first picture of GOP is intra */ /* first picture of GOP is intra */
if (s->picture_in_gop_number % s->gop_size==0 || s->force_type==I_TYPE){ if (s->picture_in_gop_number % s->gop_size==0 || s->force_type==I_TYPE){


Loading…
Cancel
Save