comparison libmpcodecs/vd_ffmpeg.c @ 8190:c3716e345dfb

ffhuffyuv
author michael
date Thu, 14 Nov 2002 19:27:51 +0000
parents 7018fadf1a94
children 3ae71e4f2858
comparison
equal deleted inserted replaced
8189:332f083385ac 8190:c3716e345dfb
234 // printf("%X %X %d %d\n", extrahdr[0], extrahdr[1]); 234 // printf("%X %X %d %d\n", extrahdr[0], extrahdr[1]);
235 } 235 }
236 if (sh->bih && (sh->bih->biSize != sizeof(BITMAPINFOHEADER)) && 236 if (sh->bih && (sh->bih->biSize != sizeof(BITMAPINFOHEADER)) &&
237 (sh->format == mmioFOURCC('M','4','S','2') || 237 (sh->format == mmioFOURCC('M','4','S','2') ||
238 sh->format == mmioFOURCC('M','P','4','S') || 238 sh->format == mmioFOURCC('M','P','4','S') ||
239 sh->format == mmioFOURCC('H','F','Y','U') ||
239 sh->format == mmioFOURCC('W','M','V','2') 240 sh->format == mmioFOURCC('W','M','V','2')
240 )) 241 ))
241 { 242 {
242 avctx->extradata_size = sh->bih->biSize-sizeof(BITMAPINFOHEADER); 243 avctx->extradata_size = sh->bih->biSize-sizeof(BITMAPINFOHEADER);
243 avctx->extradata = malloc(avctx->extradata_size); 244 avctx->extradata = malloc(avctx->extradata_size);
244 memcpy(avctx->extradata, sh->bih+1, avctx->extradata_size); 245 memcpy(avctx->extradata, sh->bih+1, avctx->extradata_size);
245 } 246 }
247
248 #if LIBAVCODEC_BUILD >= 4639
249 avctx->bits_per_sample= sh->bih->biBitCount;
250 #endif
246 251
247 /* open it */ 252 /* open it */
248 if (avcodec_open(avctx, lavc_codec) < 0) { 253 if (avcodec_open(avctx, lavc_codec) < 0) {
249 mp_msg(MSGT_DECVIDEO,MSGL_ERR, MSGTR_CantOpenCodec); 254 mp_msg(MSGT_DECVIDEO,MSGL_ERR, MSGTR_CantOpenCodec);
250 return 0; 255 return 0;
359 switch(avctx->pix_fmt){ 364 switch(avctx->pix_fmt){
360 #if LIBAVCODEC_BUILD >= 4615 365 #if LIBAVCODEC_BUILD >= 4615
361 case PIX_FMT_YUV410P: ctx->best_csp=IMGFMT_YVU9;break; //svq1 366 case PIX_FMT_YUV410P: ctx->best_csp=IMGFMT_YVU9;break; //svq1
362 #endif 367 #endif
363 case PIX_FMT_YUV420P: ctx->best_csp=IMGFMT_YV12;break; //mpegs 368 case PIX_FMT_YUV420P: ctx->best_csp=IMGFMT_YV12;break; //mpegs
364 case PIX_FMT_YUV422P: ctx->best_csp=IMGFMT_422P;break; //mjpeg 369 case PIX_FMT_YUV422P: ctx->best_csp=IMGFMT_422P;break; //mjpeg / huffyuv
365 case PIX_FMT_YUV444P: ctx->best_csp=IMGFMT_444P;break; //??? 370 case PIX_FMT_YUV444P: ctx->best_csp=IMGFMT_444P;break; //???
366 #if LIBAVCODEC_BUILD >= 4631 371 #if LIBAVCODEC_BUILD >= 4631
367 case PIX_FMT_YUV411P: ctx->best_csp=IMGFMT_411P;break; //dv ntsc 372 case PIX_FMT_YUV411P: ctx->best_csp=IMGFMT_411P;break; //dv ntsc
368 #endif 373 #endif
369 case PIX_FMT_YUV422: ctx->best_csp=IMGFMT_YUY2;break; //??? 374 case PIX_FMT_YUV422: ctx->best_csp=IMGFMT_YUY2;break; //huffyuv perhaps in the future
375 case PIX_FMT_BGR24 : ctx->best_csp=IMGFMT_BGR24;break; //huffyuv
376 case PIX_FMT_BGRA32: ctx->best_csp=IMGFMT_BGR32;break; //huffyuv
370 default: 377 default:
371 ctx->best_csp=0; 378 ctx->best_csp=0;
372 } 379 }
373 if (!mpcodecs_config_vo(sh,sh->disp_w,sh->disp_h, ctx->best_csp)) 380 if (!mpcodecs_config_vo(sh,sh->disp_w,sh->disp_h, ctx->best_csp))
374 return -1; 381 return -1;