annotate libmpcodecs/vd_ffmpeg.c @ 5574:bdfd4b72244a

fixing vertical scaling on non mobility cards, this might have overflowed into the horizontal stuff, so perhaps it fixes the horizontal stuff too
author michael
date Fri, 12 Apr 2002 12:29:12 +0000
parents a3337d7b853f
children b545d56314d2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
1 #include <stdio.h>
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
2 #include <stdlib.h>
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
3 #include <assert.h>
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
4
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
5 #include "config.h"
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
6 #include "mp_msg.h"
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
7 #include "help_mp.h"
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
8
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
9 #ifdef USE_LIBAVCODEC
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
10
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
11 #include "bswap.h"
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
12
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
13 #include "vd_internal.h"
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
14
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
15 static vd_info_t info = {
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
16 "FFmpeg's libavcodec codec family",
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
17 "ffmpeg",
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
18 VFM_FFMPEG,
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
19 "A'rpi",
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
20 "http://ffmpeg.sf.net",
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
21 "native codecs"
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
22 };
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
23
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
24 LIBVD_EXTERN(ffmpeg)
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
25
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
26 #ifdef USE_LIBAVCODEC_SO
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
27 #include <libffmpeg/avcodec.h>
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
28 #else
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
29 #include "libavcodec/avcodec.h"
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
30 #endif
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
31
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
32 int avcodec_inited=0;
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
33
5517
a3337d7b853f export qscale for postproc
arpi
parents: 5510
diff changeset
34 #ifdef FF_POSTPROCESS
a3337d7b853f export qscale for postproc
arpi
parents: 5510
diff changeset
35 int quant_store[MBR+1][MBC+1];
a3337d7b853f export qscale for postproc
arpi
parents: 5510
diff changeset
36 #endif
a3337d7b853f export qscale for postproc
arpi
parents: 5510
diff changeset
37
5280
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
38 typedef struct {
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
39 AVCodecContext *avctx;
5482
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
40 int last_aspect;
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
41 int do_slices;
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
42 int vo_inited;
5280
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
43 } vd_ffmpeg_ctx;
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
44
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
45 //#ifdef FF_POSTPROCESS
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
46 //unsigned int lavc_pp=0;
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
47 //#endif
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
48
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
49 // to set/get/query special features/parameters
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
50 static int control(sh_video_t *sh,int cmd,void* arg,...){
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
51 return CONTROL_UNKNOWN;
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
52 }
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
53
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
54 // init driver
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
55 static int init(sh_video_t *sh){
5280
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
56 AVCodecContext *avctx;
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
57 vd_ffmpeg_ctx *ctx;
5457
f248c9e86423 config vo only if aspect really changed and width&&height isn't changed (if w||h changes, we set it later)
alex
parents: 5331
diff changeset
58 AVCodec *lavc_codec;
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
59
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
60 if(!avcodec_inited){
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
61 avcodec_init();
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
62 avcodec_register_all();
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
63 avcodec_inited=1;
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
64 }
5280
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
65
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
66 ctx = sh->context = malloc(sizeof(vd_ffmpeg_ctx));
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
67 if (!ctx)
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
68 return(0);
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
69 memset(ctx, 0, sizeof(vd_ffmpeg_ctx));
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
70
5457
f248c9e86423 config vo only if aspect really changed and width&&height isn't changed (if w||h changes, we set it later)
alex
parents: 5331
diff changeset
71 lavc_codec = (AVCodec *)avcodec_find_decoder_by_name(sh->codec->dll);
f248c9e86423 config vo only if aspect really changed and width&&height isn't changed (if w||h changes, we set it later)
alex
parents: 5331
diff changeset
72 if(!lavc_codec){
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
73 mp_msg(MSGT_DECVIDEO,MSGL_ERR,MSGTR_MissingLAVCcodec,sh->codec->dll);
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
74 return 0;
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
75 }
5482
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
76
5494
1c45b1484ffb i just fixed b-frames & slices in libavcodec :) ... iam too tired for benchmarks now ...
michael
parents: 5482
diff changeset
77 if(vd_use_slices && lavc_codec->capabilities&CODEC_CAP_DRAW_HORIZ_BAND)
1c45b1484ffb i just fixed b-frames & slices in libavcodec :) ... iam too tired for benchmarks now ...
michael
parents: 5482
diff changeset
78 ctx->do_slices=1;
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
79
5280
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
80 ctx->avctx = malloc(sizeof(AVCodecContext));
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
81 memset(ctx->avctx, 0, sizeof(AVCodecContext));
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
82 avctx = ctx->avctx;
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
83
5280
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
84 avctx->width = sh->disp_w;
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
85 avctx->height= sh->disp_h;
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
86 mp_dbg(MSGT_DECVIDEO,MSGL_DBG2,"libavcodec.size: %d x %d\n",avctx->width,avctx->height);
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
87 if (sh->format == mmioFOURCC('R', 'V', '1', '3'))
5280
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
88 avctx->sub_id = 3;
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
89 /* open it */
5457
f248c9e86423 config vo only if aspect really changed and width&&height isn't changed (if w||h changes, we set it later)
alex
parents: 5331
diff changeset
90 if (avcodec_open(avctx, lavc_codec) < 0) {
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
91 mp_msg(MSGT_DECVIDEO,MSGL_ERR, MSGTR_CantOpenCodec);
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
92 return 0;
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
93 }
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
94 mp_msg(MSGT_DECVIDEO,MSGL_V,"INFO: libavcodec init OK!\n");
5482
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
95 ctx->last_aspect=-3;
5510
f2c4cace6450 don't config twice
arpi
parents: 5495
diff changeset
96 return 1; //mpcodecs_config_vo(sh,sh->disp_w,sh->disp_h,IMGFMT_YV12);
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
97 }
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
98
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
99 // uninit driver
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
100 static void uninit(sh_video_t *sh){
5280
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
101 vd_ffmpeg_ctx *ctx = sh->context;
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
102 AVCodecContext *avctx = ctx->avctx;
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
103
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
104 if (avcodec_close(avctx) < 0)
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
105 mp_msg(MSGT_DECVIDEO,MSGL_ERR, MSGTR_CantCloseCodec);
5280
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
106 if (avctx)
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
107 free(avctx);
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
108 if (ctx)
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
109 free(ctx);
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
110 }
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
111
5482
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
112 #include "libvo/video_out.h" // FIXME!!!
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
113
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
114 static void draw_slice(struct AVCodecContext *s,
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
115 UINT8 **src, int linesize,
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
116 int y, int width, int height){
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
117 vo_functions_t * output = s->opaque;
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
118 int stride[3];
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
119
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
120 stride[0]=linesize;
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
121 stride[1]=stride[2]=stride[0]/2;
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
122
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
123 output->draw_slice (src, stride, width, height, 0, y);
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
124
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
125 }
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
126
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
127 // decode a frame
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
128 static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
129 int got_picture=0;
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
130 int ret;
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
131 AVPicture lavc_picture;
5280
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
132 vd_ffmpeg_ctx *ctx = sh->context;
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
133 AVCodecContext *avctx = ctx->avctx;
5482
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
134 mp_image_t* mpi=NULL;
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
135
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
136 if(len<=0) return NULL; // skipped frame
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
137
5482
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
138 if(ctx->vo_inited){
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
139 mpi=mpcodecs_get_image(sh, MP_IMGTYPE_EXPORT, MP_IMGFLAG_PRESERVE |
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
140 (ctx->do_slices?MP_IMGFLAG_DRAW_CALLBACK:0),
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
141 sh->disp_w, sh->disp_h);
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
142 if(mpi && mpi->flags&MP_IMGFLAG_DRAW_CALLBACK){
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
143 // vd core likes slices!
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
144 avctx->draw_horiz_band=draw_slice;
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
145 avctx->opaque=sh->video_out;
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
146 } else
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
147 avctx->draw_horiz_band=NULL;
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
148 }
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
149
5280
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
150 ret = avcodec_decode_video(avctx, &lavc_picture,
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
151 &got_picture, data, len);
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
152
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
153 if(ret<0) mp_msg(MSGT_DECVIDEO,MSGL_WARN, "Error while decoding frame!\n");
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
154 if(!got_picture) return NULL; // skipped image
5280
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
155
5482
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
156 if (avctx->aspect_ratio_info != ctx->last_aspect ||
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
157 avctx->width != sh->disp_w ||
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
158 avctx->height != sh->disp_h ||
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
159 !ctx->vo_inited)
5280
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
160 {
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
161 ctx->last_aspect = avctx->aspect_ratio_info;
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
162 switch(avctx->aspect_ratio_info)
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
163 {
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
164 case FF_ASPECT_4_3_625:
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
165 case FF_ASPECT_4_3_525:
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
166 sh->aspect = 4.0/3.0;
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
167 break;
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
168 case FF_ASPECT_16_9_625:
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
169 case FF_ASPECT_16_9_525:
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
170 sh->aspect = 16.0/9.0;
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
171 break;
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
172 case FF_ASPECT_SQUARE:
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
173 default:
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
174 sh->aspect = 0.0;
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
175 break;
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
176 }
5482
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
177 sh->disp_w = avctx->width;
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
178 sh->disp_h = avctx->height;
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
179 ctx->vo_inited=1;
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
180 if (mpcodecs_config_vo(sh,sh->disp_w,sh->disp_h,IMGFMT_YV12))
5457
f248c9e86423 config vo only if aspect really changed and width&&height isn't changed (if w||h changes, we set it later)
alex
parents: 5331
diff changeset
181 return NULL;
5280
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
182 }
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
183
5482
cd97c8313300 libavcodec slices support
arpi
parents: 5457
diff changeset
184 if(!mpi)
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
185 mpi=mpcodecs_get_image(sh, MP_IMGTYPE_EXPORT, MP_IMGFLAG_PRESERVE,
5280
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
186 avctx->width, avctx->height);
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
187 if(!mpi){ // temporary!
5207
d337cc4ab0ee config vo if resolution changed (after decoded image read the dimensions out of lavc context)
alex
parents: 5124
diff changeset
188 printf("couldn't allocate image for codec\n");
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
189 return NULL;
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
190 }
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
191
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
192 mpi->planes[0]=lavc_picture.data[0];
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
193 mpi->planes[1]=lavc_picture.data[1];
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
194 mpi->planes[2]=lavc_picture.data[2];
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
195 mpi->stride[0]=lavc_picture.linesize[0];
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
196 mpi->stride[1]=lavc_picture.linesize[1];
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
197 mpi->stride[2]=lavc_picture.linesize[2];
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
198
5280
ea8f3e8f39c1 added aspect ratio support and local ctx
alex
parents: 5219
diff changeset
199 if(avctx->pix_fmt==PIX_FMT_YUV422P){
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
200 mpi->stride[1]*=2;
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
201 mpi->stride[2]*=2;
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
202 }
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
203
5517
a3337d7b853f export qscale for postproc
arpi
parents: 5510
diff changeset
204 #ifdef FF_POSTPROCESS
a3337d7b853f export qscale for postproc
arpi
parents: 5510
diff changeset
205 mpi->qscale=&quant_store[0][0];
a3337d7b853f export qscale for postproc
arpi
parents: 5510
diff changeset
206 mpi->qstride=MBC+1;
a3337d7b853f export qscale for postproc
arpi
parents: 5510
diff changeset
207 #endif
a3337d7b853f export qscale for postproc
arpi
parents: 5510
diff changeset
208
4952
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
209 return mpi;
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
210 }
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
211
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
212 #endif
ffeba1050226 vd_ffmpeg added
arpi
parents:
diff changeset
213