summaryrefslogtreecommitdiffstats
path: root/audio/decode/ad_spdif.c
diff options
context:
space:
mode:
authorsfan5 <sfan5@live.de>2023-08-07 23:08:32 +0200
committersfan5 <sfan5@live.de>2023-08-07 23:15:00 +0200
commita9c0ad149f707adf8ba34c8fe1ce5859f30b0852 (patch)
treed8fa742af4faf7653b45f3b57c872556eada5710 /audio/decode/ad_spdif.c
parentcf01646c397e025307fd8568f9867b23c7769c32 (diff)
downloadmpv-a9c0ad149f707adf8ba34c8fe1ce5859f30b0852.tar.bz2
mpv-a9c0ad149f707adf8ba34c8fe1ce5859f30b0852.tar.xz
ad_spdif: fix this not working at all
fixes 4c3ed843dc8bde419d8c08565159a83cee9e3b9b closes #12102
Diffstat (limited to 'audio/decode/ad_spdif.c')
-rw-r--r--audio/decode/ad_spdif.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/audio/decode/ad_spdif.c b/audio/decode/ad_spdif.c
index 19a9b7d2f6..393af8a2a3 100644
--- a/audio/decode/ad_spdif.c
+++ b/audio/decode/ad_spdif.c
@@ -153,8 +153,7 @@ static int init_filter(struct mp_filter *da)
{
struct spdifContext *spdif_ctx = da->priv;
- AVPacket *pkt = spdif_ctx->avpkt = av_packet_alloc();
- MP_HANDLE_OOM(spdif_ctx->avpkt);
+ AVPacket *pkt = spdif_ctx->avpkt;
int profile = FF_PROFILE_UNKNOWN;
int c_rate = 0;
@@ -299,14 +298,18 @@ static void process(struct mp_filter *da)
struct mp_aframe *out = NULL;
double pts = mpkt->pts;
+ if (!spdif_ctx->avpkt) {
+ spdif_ctx->avpkt = av_packet_alloc();
+ MP_HANDLE_OOM(spdif_ctx->avpkt);
+ }
+ mp_set_av_packet(spdif_ctx->avpkt, mpkt, NULL);
+ spdif_ctx->avpkt->pts = spdif_ctx->avpkt->dts = 0;
if (!spdif_ctx->lavf_ctx) {
if (init_filter(da) < 0)
goto done;
assert(spdif_ctx->avpkt);
}
- mp_set_av_packet(spdif_ctx->avpkt, mpkt, NULL);
- spdif_ctx->avpkt->pts = spdif_ctx->avpkt->dts = 0;
spdif_ctx->out_buffer_len = 0;
int ret = av_write_frame(spdif_ctx->lavf_ctx, spdif_ctx->avpkt);
avio_flush(spdif_ctx->lavf_ctx->pb);