OSDN Git Service

Merge commit 'afa21a12bf084f905187615706b0a8d92bc98661'
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 9 Dec 2013 11:54:59 +0000 (12:54 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 9 Dec 2013 11:54:59 +0000 (12:54 +0100)
* commit 'afa21a12bf084f905187615706b0a8d92bc98661':
  p*menc: use the AVFrame API properly.

Conflicts:
libavcodec/Makefile
libavcodec/pamenc.c
libavcodec/pnmenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/Makefile
libavcodec/pamenc.c
libavcodec/pnmenc.c

@@@ -330,30 -278,24 +330,30 @@@ OBJS-$(CONFIG_MXPEG_DECODER)           
  OBJS-$(CONFIG_NELLYMOSER_DECODER)      += nellymoserdec.o nellymoser.o
  OBJS-$(CONFIG_NELLYMOSER_ENCODER)      += nellymoserenc.o nellymoser.o
  OBJS-$(CONFIG_NUV_DECODER)             += nuv.o rtjpeg.o
 +OBJS-$(CONFIG_PAF_VIDEO_DECODER)       += paf.o
 +OBJS-$(CONFIG_PAF_AUDIO_DECODER)       += paf.o
  OBJS-$(CONFIG_PAM_DECODER)             += pnmdec.o pnm.o
- OBJS-$(CONFIG_PAM_ENCODER)             += pamenc.o pnm.o
+ OBJS-$(CONFIG_PAM_ENCODER)             += pamenc.o
  OBJS-$(CONFIG_PBM_DECODER)             += pnmdec.o pnm.o
- OBJS-$(CONFIG_PBM_ENCODER)             += pnmenc.o pnm.o
+ OBJS-$(CONFIG_PBM_ENCODER)             += pnmenc.o
  OBJS-$(CONFIG_PCX_DECODER)             += pcx.o
  OBJS-$(CONFIG_PCX_ENCODER)             += pcxenc.o
  OBJS-$(CONFIG_PGM_DECODER)             += pnmdec.o pnm.o
- OBJS-$(CONFIG_PGM_ENCODER)             += pnmenc.o pnm.o
+ OBJS-$(CONFIG_PGM_ENCODER)             += pnmenc.o
  OBJS-$(CONFIG_PGMYUV_DECODER)          += pnmdec.o pnm.o
- OBJS-$(CONFIG_PGMYUV_ENCODER)          += pnmenc.o pnm.o
+ OBJS-$(CONFIG_PGMYUV_ENCODER)          += pnmenc.o
  OBJS-$(CONFIG_PGSSUB_DECODER)          += pgssubdec.o
  OBJS-$(CONFIG_PICTOR_DECODER)          += pictordec.o cga_data.o
 +OBJS-$(CONFIG_PJS_DECODER)             += textdec.o ass.o
  OBJS-$(CONFIG_PNG_DECODER)             += png.o pngdec.o pngdsp.o
  OBJS-$(CONFIG_PNG_ENCODER)             += png.o pngenc.o
  OBJS-$(CONFIG_PPM_DECODER)             += pnmdec.o pnm.o
- OBJS-$(CONFIG_PPM_ENCODER)             += pnmenc.o pnm.o
+ OBJS-$(CONFIG_PPM_ENCODER)             += pnmenc.o
 -OBJS-$(CONFIG_PRORES_DECODER)          += proresdec.o proresdata.o proresdsp.o
 -OBJS-$(CONFIG_PRORES_ENCODER)          += proresenc.o proresdata.o proresdsp.o
 +OBJS-$(CONFIG_PRORES_DECODER)          += proresdec2.o proresdsp.o proresdata.o
 +OBJS-$(CONFIG_PRORES_LGPL_DECODER)     += proresdec_lgpl.o proresdsp.o proresdata.o
 +OBJS-$(CONFIG_PRORES_ENCODER)          += proresenc_anatoliy.o
 +OBJS-$(CONFIG_PRORES_AW_ENCODER)       += proresenc_anatoliy.o
 +OBJS-$(CONFIG_PRORES_KS_ENCODER)       += proresenc_kostya.o proresdata.o proresdsp.o
  OBJS-$(CONFIG_PTX_DECODER)             += ptx.o
  OBJS-$(CONFIG_QCELP_DECODER)           += qcelpdec.o                     \
                                            celp_filters.o acelp_vectors.o \
   */
  
  #include "avcodec.h"
 -#include "bytestream.h"
  #include "internal.h"
- #include "pnm.h"
  
  static int pam_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
 -                            const AVFrame *pict, int *got_packet)
 +                            const AVFrame *p, int *got_packet)
  {
-     PNMContext *s     = avctx->priv_data;
+     uint8_t *bytestream_start, *bytestream, *bytestream_end;
 -    const AVFrame * const p = pict;
      int i, h, w, n, linesize, depth, maxval, ret;
      const char *tuple_type;
      uint8_t *ptr;
      default:
          return -1;
      }
-     s->bytestream_start =
-     s->bytestream       = pkt->data;
-     s->bytestream_end   = pkt->data + pkt->size;
 +
 +    if ((ret = ff_alloc_packet2(avctx, pkt, n*h + 200)) < 0)
 +        return ret;
 +
-     snprintf(s->bytestream, s->bytestream_end - s->bytestream,
++    bytestream_start =
++    bytestream       = pkt->data;
++    bytestream_end   = pkt->data + pkt->size;
 +
+     snprintf(bytestream, bytestream_end - bytestream,
               "P7\nWIDTH %d\nHEIGHT %d\nDEPTH %d\nMAXVAL %d\nTUPLTYPE %s\nENDHDR\n",
               w, h, depth, maxval, tuple_type);
-     s->bytestream += strlen(s->bytestream);
+     bytestream += strlen(bytestream);
  
      ptr      = p->data[0];
      linesize = p->linesize[0];
  
 -    if (avctx->pix_fmt == AV_PIX_FMT_RGB32) {
 +    if (avctx->pix_fmt == AV_PIX_FMT_MONOBLACK){
          int j;
 -        unsigned int v;
 -
          for (i = 0; i < h; i++) {
 -            for (j = 0; j < w; j++) {
 -                v = ((uint32_t *)ptr)[j];
 -                bytestream_put_be24(&bytestream, v);
 -                *bytestream++ = v >> 24;
 -            }
 +            for (j = 0; j < w; j++)
-                 *s->bytestream++ = ptr[j >> 3] >> (7 - j & 7) & 1;
++                *bytestream++ = ptr[j >> 3] >> (7 - j & 7) & 1;
              ptr += linesize;
          }
      } else {
@@@ -129,9 -130,11 +144,10 @@@ AVCodec ff_pam_encoder = 
      .long_name      = NULL_IF_CONFIG_SMALL("PAM (Portable AnyMap) image"),
      .type           = AVMEDIA_TYPE_VIDEO,
      .id             = AV_CODEC_ID_PAM,
-     .priv_data_size = sizeof(PNMContext),
+     .init           = pam_encode_init,
+     .close          = pam_encode_close,
      .encode2        = pam_encode_frame,
      .pix_fmts       = (const enum AVPixelFormat[]){
 -        AV_PIX_FMT_RGB24, AV_PIX_FMT_RGB32, AV_PIX_FMT_GRAY8, AV_PIX_FMT_MONOWHITE,
 -        AV_PIX_FMT_NONE
 +        AV_PIX_FMT_RGB24, AV_PIX_FMT_RGBA, AV_PIX_FMT_RGB48BE, AV_PIX_FMT_RGBA64BE, AV_PIX_FMT_GRAY8, AV_PIX_FMT_GRAY8A, AV_PIX_FMT_GRAY16BE, AV_PIX_FMT_MONOBLACK, AV_PIX_FMT_NONE
      },
  };
  
  #include "libavutil/pixdesc.h"
  #include "avcodec.h"
 -#include "bytestream.h"
  #include "internal.h"
- #include "pnm.h"
  
  static int pnm_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
 -                            const AVFrame *pict, int *got_packet)
 +                            const AVFrame *p, int *got_packet)
  {
-     PNMContext *s     = avctx->priv_data;
+     uint8_t *bytestream, *bytestream_start, *bytestream_end;
 -    const AVFrame * const p = pict;
      int i, h, h1, c, n, linesize, ret;
      uint8_t *ptr, *ptr1, *ptr2;
  
 -    if ((ret = ff_alloc_packet(pkt, avpicture_get_size(avctx->pix_fmt,
 +    if ((ret = ff_alloc_packet2(avctx, pkt, avpicture_get_size(avctx->pix_fmt,
                                                         avctx->width,
 -                                                       avctx->height) + 200)) < 0) {
 -        av_log(avctx, AV_LOG_ERROR, "encoded frame too large\n");
 +                                                       avctx->height) + 200)) < 0)
          return ret;
 -    }
  
-     s->bytestream_start =
-     s->bytestream       = pkt->data;
-     s->bytestream_end   = pkt->data + pkt->size;
+     bytestream_start =
+     bytestream       = pkt->data;
+     bytestream_end   = pkt->data + pkt->size;
  
      h  = avctx->height;
      h1 = h;