summaryrefslogtreecommitdiff
path: root/libavformat/dv.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2021-05-02 10:13:38 -0300
committerJames Almer <jamrial@gmail.com>2021-05-06 09:44:42 -0300
commit57aaeff523ec45039c564765673c998ee900d4f9 (patch)
tree7b14d543e7479f17a95f58384e36b7128aae2a80 /libavformat/dv.c
parent7539a01bb0ea24998e1aa87706edf9785ddd3ac6 (diff)
avformat/dv: stop using av_init_packet()
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavformat/dv.c')
-rw-r--r--libavformat/dv.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/libavformat/dv.c b/libavformat/dv.c
index cbb38cbd7d..d7909683c3 100644
--- a/libavformat/dv.c
+++ b/libavformat/dv.c
@@ -40,12 +40,22 @@
#include "dv.h"
#include "libavutil/avassert.h"
+// Must be kept in sync with AVPacket
+struct DVPacket {
+ int64_t pts;
+ uint8_t *data;
+ int size;
+ int stream_index;
+ int flags;
+ int64_t pos;
+};
+
struct DVDemuxContext {
const AVDVProfile* sys; /* Current DV profile. E.g.: 525/60, 625/50 */
AVFormatContext* fctx;
AVStream* vst;
AVStream* ast[4];
- AVPacket audio_pkt[4];
+ struct DVPacket audio_pkt[4];
uint8_t audio_buf[4][8192];
int ach;
int frames;
@@ -261,11 +271,12 @@ static int dv_extract_audio_info(DVDemuxContext *c, const uint8_t *frame)
c->ast[i]->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
c->ast[i]->codecpar->codec_id = AV_CODEC_ID_PCM_S16LE;
- av_init_packet(&c->audio_pkt[i]);
c->audio_pkt[i].size = 0;
c->audio_pkt[i].data = c->audio_buf[i];
c->audio_pkt[i].stream_index = c->ast[i]->index;
c->audio_pkt[i].flags |= AV_PKT_FLAG_KEY;
+ c->audio_pkt[i].pts = AV_NOPTS_VALUE;
+ c->audio_pkt[i].pos = -1;
}
c->ast[i]->codecpar->sample_rate = dv_audio_frequency[freq];
c->ast[i]->codecpar->channels = 2;
@@ -358,7 +369,13 @@ int avpriv_dv_get_packet(DVDemuxContext *c, AVPacket *pkt)
for (i = 0; i < c->ach; i++) {
if (c->ast[i] && c->audio_pkt[i].size) {
- *pkt = c->audio_pkt[i];
+ pkt->size = c->audio_pkt[i].size;
+ pkt->data = c->audio_pkt[i].data;
+ pkt->stream_index = c->audio_pkt[i].stream_index;
+ pkt->flags = c->audio_pkt[i].flags;
+ pkt->pts = c->audio_pkt[i].pts;
+ pkt->pos = c->audio_pkt[i].pos;
+
c->audio_pkt[i].size = 0;
size = pkt->size;
break;
@@ -404,7 +421,6 @@ int avpriv_dv_produce_packet(DVDemuxContext *c, AVPacket *pkt,
/* Now it's time to return video packet */
size = dv_extract_video_info(c, buf);
- av_init_packet(pkt);
pkt->data = buf;
pkt->pos = pos;
pkt->size = size;