[FFmpeg-cvslog] Merge commit '5d0f85f1b2469b60d0838330aabe5353fdd9ef1d'

Clément Bœsch git at videolan.org
Tue Jan 31 18:29:56 EET 2017


ffmpeg | branch: master | Clément Bœsch <cboesch at gopro.com> | Tue Jan 31 17:27:46 2017 +0100| [b9292a9698375510c5668cde4ce80dea79d8ec02] | committer: Clément Bœsch

Merge commit '5d0f85f1b2469b60d0838330aabe5353fdd9ef1d'

* commit '5d0f85f1b2469b60d0838330aabe5353fdd9ef1d':
  libdc1394: Fill in packet data directly

Merged-by: Clément Bœsch <cboesch at gopro.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b9292a9698375510c5668cde4ce80dea79d8ec02
---

 libavdevice/libdc1394.c | 44 +++++++++++++++++++++-----------------------
 1 file changed, 21 insertions(+), 23 deletions(-)

diff --git a/libavdevice/libdc1394.c b/libavdevice/libdc1394.c
index 60c6146..c5fdd10 100644
--- a/libavdevice/libdc1394.c
+++ b/libavdevice/libdc1394.c
@@ -69,7 +69,8 @@ typedef struct dc1394_data {
     char *pixel_format;     /**< Set by a private option. */
     char *framerate;        /**< Set by a private option. */
 
-    AVPacket packet;
+    int size;
+    int stream_index;
 } dc1394_data;
 
 static const struct dc1394_frame_format {
@@ -178,16 +179,13 @@ static inline int dc1394_read_common(AVFormatContext *c,
     vst->codecpar->format = fmt->pix_fmt;
     vst->avg_frame_rate = framerate;
 
-    /* packet init */
-    av_init_packet(&dc1394->packet);
-    dc1394->packet.size = av_image_get_buffer_size(fmt->pix_fmt,
-                                                   fmt->width, fmt->height, 1);
-    dc1394->packet.stream_index = vst->index;
-    dc1394->packet.flags |= AV_PKT_FLAG_KEY;
-
     dc1394->current_frame = 0;
+    dc1394->stream_index = vst->index;
+    dc1394->size = av_image_get_buffer_size(fmt->pix_fmt,
+                                            fmt->width, fmt->height, 1);
 
-    vst->codecpar->bit_rate = av_rescale(dc1394->packet.size * 8, fps->frame_rate, 1000);
+    vst->codecpar->bit_rate = av_rescale(dc1394->size * 8,
+                                         fps->frame_rate, 1000);
     *select_fps = fps;
     *select_fmt = fmt;
 out:
@@ -263,17 +261,17 @@ static int dc1394_v1_read_packet(AVFormatContext *c, AVPacket *pkt)
     res = dc1394_dma_single_capture(&dc1394->camera);
 
     if (res == DC1394_SUCCESS) {
-        dc1394->packet.data = (uint8_t *)(dc1394->camera.capture_buffer);
-        dc1394->packet.pts = (dc1394->current_frame * 1000000) / dc1394->frame_rate;
-        res = dc1394->packet.size;
+        pkt->data = (uint8_t *)dc1394->camera.capture_buffer;
+        pkt->size = dc1394->size;
+        pkt->pts = (dc1394->current_frame * 1000000) / dc1394->frame_rate;
+        pkt->flags |= AV_PKT_FLAG_KEY;
+        pkt->stream_index = dc1394->stream_index;
     } else {
         av_log(c, AV_LOG_ERROR, "DMA capture failed\n");
-        dc1394->packet.data = NULL;
-        res = -1;
+        return AVERROR_INVALIDDATA;
     }
 
-    *pkt = dc1394->packet;
-    return res;
+    return pkt->size;
 }
 
 static int dc1394_v1_close(AVFormatContext * context)
@@ -380,17 +378,17 @@ static int dc1394_v2_read_packet(AVFormatContext *c, AVPacket *pkt)
 
     res = dc1394_capture_dequeue(dc1394->camera, DC1394_CAPTURE_POLICY_WAIT, &dc1394->frame);
     if (res == DC1394_SUCCESS) {
-        dc1394->packet.data = (uint8_t *) dc1394->frame->image;
-        dc1394->packet.pts  = dc1394->current_frame * 1000000 / dc1394->frame_rate;
-        res = dc1394->frame->image_bytes;
+        pkt->data = (uint8_t *)dc1394->frame->image;
+        pkt->size = dc1394->frame->image_bytes;
+        pkt->pts = dc1394->current_frame * 1000000 / dc1394->frame_rate;
+        pkt->flags |= AV_PKT_FLAG_KEY;
+        pkt->stream_index = dc1394->stream_index;
     } else {
         av_log(c, AV_LOG_ERROR, "DMA capture failed\n");
-        dc1394->packet.data = NULL;
-        res = -1;
+        return AVERROR_INVALIDDATA;
     }
 
-    *pkt = dc1394->packet;
-    return res;
+    return pkt->size;
 }
 
 static int dc1394_v2_close(AVFormatContext * context)


======================================================================

diff --cc libavdevice/libdc1394.c
index 60c6146,a0ea592..c5fdd10
--- a/libavdevice/libdc1394.c
+++ b/libavdevice/libdc1394.c
@@@ -69,10 -69,11 +69,11 @@@ typedef struct dc1394_data 
      char *pixel_format;     /**< Set by a private option. */
      char *framerate;        /**< Set by a private option. */
  
-     AVPacket packet;
+     int size;
+     int stream_index;
  } dc1394_data;
  
 -struct dc1394_frame_format {
 +static const struct dc1394_frame_format {
      int width;
      int height;
      enum AVPixelFormat pix_fmt;



More information about the ffmpeg-cvslog mailing list