[FFmpeg-devel] [PATCH 1/3] avformat/dv: stop using av_init_packet()
James Almer
jamrial at gmail.com
Sun May 2 16:58:17 EEST 2021
Signed-off-by: James Almer <jamrial at gmail.com>
---
libavformat/dv.c | 24 ++++++++++++++++++++----
1 file 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;
--
2.31.1
More information about the ffmpeg-devel
mailing list