diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-12-17 16:27:36 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-12-17 16:27:36 +0100 |
commit | c81234651f761a44a3e72829fd494211e237069c (patch) | |
tree | e3b117f0b5715df56ad4e148bb771d25f9ebc733 | |
parent | fca7943850ecdc1e67a0275b488768be01867f75 (diff) | |
download | ffmpeg-c81234651f761a44a3e72829fd494211e237069c.tar.gz |
avcodec/msvideo1enc: drop dependancy on sizeof(AVFrame)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/msvideo1enc.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/libavcodec/msvideo1enc.c b/libavcodec/msvideo1enc.c index 7844d57b70..99282502aa 100644 --- a/libavcodec/msvideo1enc.c +++ b/libavcodec/msvideo1enc.c @@ -35,7 +35,6 @@ */ typedef struct Msvideo1EncContext { AVCodecContext *avctx; - AVFrame pic; AVLFG rnd; uint8_t *prev; @@ -67,7 +66,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *pict, int *got_packet) { Msvideo1EncContext * const c = avctx->priv_data; - AVFrame * const p = &c->pic; + const AVFrame *p = pict; uint16_t *src; uint8_t *prevptr; uint8_t *dst, *buf; @@ -75,12 +74,12 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, int no_skips = 1; int i, j, k, x, y, ret; int skips = 0; + int quality = 24; if ((ret = ff_alloc_packet2(avctx, pkt, avctx->width*avctx->height*9 + FF_MIN_BUFFER_SIZE)) < 0) return ret; dst= buf= pkt->data; - *p = *pict; if(!c->prev) c->prev = av_malloc(avctx->width * 3 * (avctx->height + 3)); prevptr = c->prev + avctx->width * 3 * (FFALIGN(avctx->height, 4) - 1); @@ -88,7 +87,6 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, if(c->keyint >= avctx->keyint_min) keyframe = 1; - p->quality = 24; for(y = 0; y < avctx->height; y += 4){ for(x = 0; x < avctx->width; x += 4){ @@ -114,7 +112,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, bestscore += t*t; } } - bestscore /= p->quality; + bestscore /= quality; } // try to find optimal value to fill whole 4x4 block score = 0; @@ -130,7 +128,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, } } } - score /= p->quality; + score /= quality; score += 2; if(score < bestscore){ bestscore = score; @@ -155,7 +153,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, } } } - score /= p->quality; + score /= quality; score += 6; if(score < bestscore){ bestscore = score; @@ -182,7 +180,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, } } } - score /= p->quality; + score /= quality; score += 18; if(score < bestscore){ bestscore = score; @@ -248,8 +246,6 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, c->keyint = 0; else c->keyint++; - p->pict_type= keyframe ? AV_PICTURE_TYPE_I : AV_PICTURE_TYPE_P; - p->key_frame= keyframe; if (keyframe) pkt->flags |= AV_PKT_FLAG_KEY; pkt->size = dst - buf; *got_packet = 1; @@ -274,8 +270,6 @@ static av_cold int encode_init(AVCodecContext *avctx) return -1; } - avcodec_get_frame_defaults(&c->pic); - avctx->coded_frame = (AVFrame*)&c->pic; avctx->bits_per_coded_sample = 16; c->keyint = avctx->keyint_min; |