Mercurial > libavcodec.hg
comparison pnmenc.c @ 10460:059265d3cc65 libavcodec
Move PNM init/end functions to the PNM common code.
This is done in preparation for the PNM encoder/decoder split.
author | diego |
---|---|
date | Tue, 27 Oct 2009 17:15:05 +0000 |
parents | a6bb56636f90 |
children | 267588850827 |
comparison
equal
deleted
inserted
replaced
10459:a6bb56636f90 | 10460:059265d3cc65 |
---|---|
21 | 21 |
22 #include "avcodec.h" | 22 #include "avcodec.h" |
23 #include "bytestream.h" | 23 #include "bytestream.h" |
24 #include "pnm.h" | 24 #include "pnm.h" |
25 | 25 |
26 | |
27 static av_cold int common_init(AVCodecContext *avctx) | |
28 { | |
29 PNMContext *s = avctx->priv_data; | |
30 | |
31 avcodec_get_frame_defaults((AVFrame*)&s->picture); | |
32 avctx->coded_frame = (AVFrame*)&s->picture; | |
33 | |
34 return 0; | |
35 } | |
36 | 26 |
37 static int pnm_decode_frame(AVCodecContext *avctx, void *data, | 27 static int pnm_decode_frame(AVCodecContext *avctx, void *data, |
38 int *data_size, AVPacket *avpkt) | 28 int *data_size, AVPacket *avpkt) |
39 { | 29 { |
40 const uint8_t *buf = avpkt->data; | 30 const uint8_t *buf = avpkt->data; |
330 } | 320 } |
331 } | 321 } |
332 return s->bytestream - s->bytestream_start; | 322 return s->bytestream - s->bytestream_start; |
333 } | 323 } |
334 | 324 |
335 static av_cold int common_end(AVCodecContext *avctx) | |
336 { | |
337 PNMContext *s = avctx->priv_data; | |
338 | |
339 if (s->picture.data[0]) | |
340 avctx->release_buffer(avctx, &s->picture); | |
341 | |
342 return 0; | |
343 } | |
344 | |
345 | 325 |
346 #if CONFIG_PGM_DECODER | 326 #if CONFIG_PGM_DECODER |
347 AVCodec pgm_decoder = { | 327 AVCodec pgm_decoder = { |
348 "pgm", | 328 "pgm", |
349 CODEC_TYPE_VIDEO, | 329 CODEC_TYPE_VIDEO, |
350 CODEC_ID_PGM, | 330 CODEC_ID_PGM, |
351 sizeof(PNMContext), | 331 sizeof(PNMContext), |
352 common_init, | 332 ff_pnm_init, |
353 NULL, | 333 NULL, |
354 common_end, | 334 ff_pnm_end, |
355 pnm_decode_frame, | 335 pnm_decode_frame, |
356 CODEC_CAP_DR1, | 336 CODEC_CAP_DR1, |
357 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_GRAY8, PIX_FMT_GRAY16BE, PIX_FMT_NONE}, | 337 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_GRAY8, PIX_FMT_GRAY16BE, PIX_FMT_NONE}, |
358 .long_name = NULL_IF_CONFIG_SMALL("PGM (Portable GrayMap) image"), | 338 .long_name = NULL_IF_CONFIG_SMALL("PGM (Portable GrayMap) image"), |
359 }; | 339 }; |
363 AVCodec pgm_encoder = { | 343 AVCodec pgm_encoder = { |
364 "pgm", | 344 "pgm", |
365 CODEC_TYPE_VIDEO, | 345 CODEC_TYPE_VIDEO, |
366 CODEC_ID_PGM, | 346 CODEC_ID_PGM, |
367 sizeof(PNMContext), | 347 sizeof(PNMContext), |
368 common_init, | 348 ff_pnm_init, |
369 pnm_encode_frame, | 349 pnm_encode_frame, |
370 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_GRAY8, PIX_FMT_GRAY16BE, PIX_FMT_NONE}, | 350 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_GRAY8, PIX_FMT_GRAY16BE, PIX_FMT_NONE}, |
371 .long_name = NULL_IF_CONFIG_SMALL("PGM (Portable GrayMap) image"), | 351 .long_name = NULL_IF_CONFIG_SMALL("PGM (Portable GrayMap) image"), |
372 }; | 352 }; |
373 #endif | 353 #endif |
376 AVCodec pgmyuv_decoder = { | 356 AVCodec pgmyuv_decoder = { |
377 "pgmyuv", | 357 "pgmyuv", |
378 CODEC_TYPE_VIDEO, | 358 CODEC_TYPE_VIDEO, |
379 CODEC_ID_PGMYUV, | 359 CODEC_ID_PGMYUV, |
380 sizeof(PNMContext), | 360 sizeof(PNMContext), |
381 common_init, | 361 ff_pnm_init, |
382 NULL, | 362 NULL, |
383 common_end, | 363 ff_pnm_end, |
384 pnm_decode_frame, | 364 pnm_decode_frame, |
385 CODEC_CAP_DR1, | 365 CODEC_CAP_DR1, |
386 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE}, | 366 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE}, |
387 .long_name = NULL_IF_CONFIG_SMALL("PGMYUV (Portable GrayMap YUV) image"), | 367 .long_name = NULL_IF_CONFIG_SMALL("PGMYUV (Portable GrayMap YUV) image"), |
388 }; | 368 }; |
392 AVCodec pgmyuv_encoder = { | 372 AVCodec pgmyuv_encoder = { |
393 "pgmyuv", | 373 "pgmyuv", |
394 CODEC_TYPE_VIDEO, | 374 CODEC_TYPE_VIDEO, |
395 CODEC_ID_PGMYUV, | 375 CODEC_ID_PGMYUV, |
396 sizeof(PNMContext), | 376 sizeof(PNMContext), |
397 common_init, | 377 ff_pnm_init, |
398 pnm_encode_frame, | 378 pnm_encode_frame, |
399 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE}, | 379 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE}, |
400 .long_name = NULL_IF_CONFIG_SMALL("PGMYUV (Portable GrayMap YUV) image"), | 380 .long_name = NULL_IF_CONFIG_SMALL("PGMYUV (Portable GrayMap YUV) image"), |
401 }; | 381 }; |
402 #endif | 382 #endif |
405 AVCodec ppm_decoder = { | 385 AVCodec ppm_decoder = { |
406 "ppm", | 386 "ppm", |
407 CODEC_TYPE_VIDEO, | 387 CODEC_TYPE_VIDEO, |
408 CODEC_ID_PPM, | 388 CODEC_ID_PPM, |
409 sizeof(PNMContext), | 389 sizeof(PNMContext), |
410 common_init, | 390 ff_pnm_init, |
411 NULL, | 391 NULL, |
412 common_end, | 392 ff_pnm_end, |
413 pnm_decode_frame, | 393 pnm_decode_frame, |
414 CODEC_CAP_DR1, | 394 CODEC_CAP_DR1, |
415 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGB48BE, PIX_FMT_NONE}, | 395 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGB48BE, PIX_FMT_NONE}, |
416 .long_name = NULL_IF_CONFIG_SMALL("PPM (Portable PixelMap) image"), | 396 .long_name = NULL_IF_CONFIG_SMALL("PPM (Portable PixelMap) image"), |
417 }; | 397 }; |
421 AVCodec ppm_encoder = { | 401 AVCodec ppm_encoder = { |
422 "ppm", | 402 "ppm", |
423 CODEC_TYPE_VIDEO, | 403 CODEC_TYPE_VIDEO, |
424 CODEC_ID_PPM, | 404 CODEC_ID_PPM, |
425 sizeof(PNMContext), | 405 sizeof(PNMContext), |
426 common_init, | 406 ff_pnm_init, |
427 pnm_encode_frame, | 407 pnm_encode_frame, |
428 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGB48BE, PIX_FMT_NONE}, | 408 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGB48BE, PIX_FMT_NONE}, |
429 .long_name = NULL_IF_CONFIG_SMALL("PPM (Portable PixelMap) image"), | 409 .long_name = NULL_IF_CONFIG_SMALL("PPM (Portable PixelMap) image"), |
430 }; | 410 }; |
431 #endif | 411 #endif |
434 AVCodec pbm_decoder = { | 414 AVCodec pbm_decoder = { |
435 "pbm", | 415 "pbm", |
436 CODEC_TYPE_VIDEO, | 416 CODEC_TYPE_VIDEO, |
437 CODEC_ID_PBM, | 417 CODEC_ID_PBM, |
438 sizeof(PNMContext), | 418 sizeof(PNMContext), |
439 common_init, | 419 ff_pnm_init, |
440 NULL, | 420 NULL, |
441 common_end, | 421 ff_pnm_end, |
442 pnm_decode_frame, | 422 pnm_decode_frame, |
443 CODEC_CAP_DR1, | 423 CODEC_CAP_DR1, |
444 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_MONOWHITE, PIX_FMT_NONE}, | 424 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_MONOWHITE, PIX_FMT_NONE}, |
445 .long_name = NULL_IF_CONFIG_SMALL("PBM (Portable BitMap) image"), | 425 .long_name = NULL_IF_CONFIG_SMALL("PBM (Portable BitMap) image"), |
446 }; | 426 }; |
450 AVCodec pbm_encoder = { | 430 AVCodec pbm_encoder = { |
451 "pbm", | 431 "pbm", |
452 CODEC_TYPE_VIDEO, | 432 CODEC_TYPE_VIDEO, |
453 CODEC_ID_PBM, | 433 CODEC_ID_PBM, |
454 sizeof(PNMContext), | 434 sizeof(PNMContext), |
455 common_init, | 435 ff_pnm_init, |
456 pnm_encode_frame, | 436 pnm_encode_frame, |
457 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_MONOWHITE, PIX_FMT_NONE}, | 437 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_MONOWHITE, PIX_FMT_NONE}, |
458 .long_name = NULL_IF_CONFIG_SMALL("PBM (Portable BitMap) image"), | 438 .long_name = NULL_IF_CONFIG_SMALL("PBM (Portable BitMap) image"), |
459 }; | 439 }; |
460 #endif | 440 #endif |
463 AVCodec pam_decoder = { | 443 AVCodec pam_decoder = { |
464 "pam", | 444 "pam", |
465 CODEC_TYPE_VIDEO, | 445 CODEC_TYPE_VIDEO, |
466 CODEC_ID_PAM, | 446 CODEC_ID_PAM, |
467 sizeof(PNMContext), | 447 sizeof(PNMContext), |
468 common_init, | 448 ff_pnm_init, |
469 NULL, | 449 NULL, |
470 common_end, | 450 ff_pnm_end, |
471 pnm_decode_frame, | 451 pnm_decode_frame, |
472 CODEC_CAP_DR1, | 452 CODEC_CAP_DR1, |
473 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGB32, PIX_FMT_GRAY8, PIX_FMT_MONOWHITE, PIX_FMT_NONE}, | 453 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGB32, PIX_FMT_GRAY8, PIX_FMT_MONOWHITE, PIX_FMT_NONE}, |
474 .long_name = NULL_IF_CONFIG_SMALL("PAM (Portable AnyMap) image"), | 454 .long_name = NULL_IF_CONFIG_SMALL("PAM (Portable AnyMap) image"), |
475 }; | 455 }; |
479 AVCodec pam_encoder = { | 459 AVCodec pam_encoder = { |
480 "pam", | 460 "pam", |
481 CODEC_TYPE_VIDEO, | 461 CODEC_TYPE_VIDEO, |
482 CODEC_ID_PAM, | 462 CODEC_ID_PAM, |
483 sizeof(PNMContext), | 463 sizeof(PNMContext), |
484 common_init, | 464 ff_pnm_init, |
485 pam_encode_frame, | 465 pam_encode_frame, |
486 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGB32, PIX_FMT_GRAY8, PIX_FMT_MONOWHITE, PIX_FMT_NONE}, | 466 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGB32, PIX_FMT_GRAY8, PIX_FMT_MONOWHITE, PIX_FMT_NONE}, |
487 .long_name = NULL_IF_CONFIG_SMALL("PAM (Portable AnyMap) image"), | 467 .long_name = NULL_IF_CONFIG_SMALL("PAM (Portable AnyMap) image"), |
488 }; | 468 }; |
489 #endif | 469 #endif |