Merge commit '00332e0a064dad866812de9162b009cbaba6f5df'
authorHendrik Leppkes <h.leppkes@gmail.com>
Wed, 14 Oct 2015 11:25:25 +0000 (13:25 +0200)
committerHendrik Leppkes <h.leppkes@gmail.com>
Wed, 14 Oct 2015 11:26:17 +0000 (13:26 +0200)
* commit '00332e0a064dad866812de9162b009cbaba6f5df':
  wrapped_avframe: Initial implementation

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
1  2 
libavcodec/Makefile
libavcodec/allcodecs.c
libavcodec/avcodec.h
libavcodec/codec_desc.c
libavcodec/version.h
libavcodec/wrapped_avframe.c

Simple merge
Simple merge
Simple merge
Simple merge
@@@ -28,9 -28,9 +28,9 @@@
  
  #include "libavutil/version.h"
  
 -#define LIBAVCODEC_VERSION_MAJOR 57
 -#define LIBAVCODEC_VERSION_MINOR  4
 -#define LIBAVCODEC_VERSION_MICRO  0
 +#define LIBAVCODEC_VERSION_MAJOR  57
- #define LIBAVCODEC_VERSION_MINOR   5
++#define LIBAVCODEC_VERSION_MINOR   6
 +#define LIBAVCODEC_VERSION_MICRO 100
  
  #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
                                                 LIBAVCODEC_VERSION_MINOR, \
index 0000000,9d504db..b8f1ec5
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,74 +1,74 @@@
 - * This file is part of Libav.
+ /*
+  * AVFrame wrapper
+  * Copyright (c) 2015 Luca Barbato
+  *
 - * Libav is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
+  *
 - * Libav is distributed in the hope that it will be useful,
++ * FFmpeg is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU Lesser General Public
+  * License as published by the Free Software Foundation; either
+  * version 2.1 of the License, or (at your option) any later version.
+  *
 - * License along with Libav; if not, write to the Free Software
++ * FFmpeg is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
++ * License along with FFmpeg; if not, write to the Free Software
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+  */
+ /**
+  * @file
+  * Simple wrapper to store an AVFrame and forward it as AVPacket.
+  */
+ #include "avcodec.h"
+ #include "internal.h"
+ #include "libavutil/internal.h"
+ #include "libavutil/frame.h"
+ #include "libavutil/buffer.h"
+ #include "libavutil/pixdesc.h"
+ static void wrapped_avframe_release_buffer(void *unused, uint8_t *data)
+ {
+     AVFrame *frame = (AVFrame *)data;
+     av_frame_free(&frame);
+ }
+ static int wrapped_avframe_encode(AVCodecContext *avctx, AVPacket *pkt,
+                      const AVFrame *frame, int *got_packet)
+ {
+     AVFrame *wrapped = av_frame_clone(frame);
+     int ret;
+     if (!wrapped)
+         return AVERROR(ENOMEM);
+     pkt->buf = av_buffer_create((uint8_t *)wrapped, sizeof(*wrapped),
+                                 wrapped_avframe_release_buffer, NULL,
+                                 AV_BUFFER_FLAG_READONLY);
+     if (!pkt->buf) {
+         av_frame_free(&wrapped);
+         return AVERROR(ENOMEM);
+     }
+     pkt->data = (uint8_t *)wrapped;
+     pkt->size = sizeof(*wrapped);
+     pkt->flags |= AV_PKT_FLAG_KEY;
+     *got_packet = 1;
+     return 0;
+ }
+ AVCodec ff_wrapped_avframe_encoder = {
+     .name           = "wrapped_avframe",
+     .long_name      = NULL_IF_CONFIG_SMALL("AVFrame to AVPacket passthrough"),
+     .type           = AVMEDIA_TYPE_VIDEO,
+     .id             = AV_CODEC_ID_WRAPPED_AVFRAME,
+     .encode2        = wrapped_avframe_encode,
+     .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE,
+ };