Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVittorio Giovara <vittorio.giovara@gmail.com>2016-07-13 19:56:51 +0300
committerVittorio Giovara <vittorio.giovara@gmail.com>2016-07-20 18:13:10 +0300
commit5d0f85f1b2469b60d0838330aabe5353fdd9ef1d (patch)
tree1b2eb8137035b9e2fcd116b2aaa1fda4ce34bfa1 /libavdevice/libdc1394.c
parente344e65109f1a75ca82aff4cecec44e79197753c (diff)
libdc1394: Fill in packet data directly
Drop the packet embedded in the context.
Diffstat (limited to 'libavdevice/libdc1394.c')
-rw-r--r--libavdevice/libdc1394.c44
1 files changed, 21 insertions, 23 deletions
diff --git a/libavdevice/libdc1394.c b/libavdevice/libdc1394.c
index 72e2e8bcc8..a0ea592c9f 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;
struct dc1394_frame_format {
@@ -177,16 +178,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:
@@ -262,17 +260,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)
@@ -374,17 +372,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)