On 24/4/21 8:35 am, Aidan Richmond wrote:

+
+    if (st->codecpar->codec_id != AV_CODEC_ID_ADPCM_IMA_WS) {
+        av_log(st, AV_LOG_ERROR, "%s codec not supported for Westwood AUD.\n",
+               avcodec_get_name(st->codecpar->codec_id));
+        return -1;

AVERROR(EINVAL)

+    }
+
+    if (ctx->nb_streams != 1) {
+        av_log(st, AV_LOG_ERROR, "AUD files have exactly one stream\n");
+        return AVERROR(EINVAL);
+    }
+

Move both these checks into an init function.

+static int wsaud_write_trailer(AVFormatContext *ctx)
+{
+    AVIOContext  *pb = ctx->pb;
+    AUDMuxContext *a = ctx->priv_data;
+
+    if(!pb->seekable) {
+        av_log(ctx->streams[0], AV_LOG_ERROR, "Cannot seek to write file size to 
header.");
+        return -1;
+    }
+

Same with this one. No point writing the file at all if it's not seekable.

+    avio_seek(pb, 2, SEEK_SET);
+    avio_wl32(pb, a->size);
+    avio_wl32(pb, a->uncomp_size);
+
+    return 0;
+}
+
+AVOutputFormat ff_wsaud_muxer = {
+    .name              = "wsaud",
+    .long_name         = NULL_IF_CONFIG_SMALL("Westwood Studios audio"),
+    .extensions        = "aud",
+    .priv_data_size    = sizeof(AUDMuxContext),
+    .audio_codec       = AV_CODEC_ID_ADPCM_IMA_WS,
+    .video_codec       = AV_CODEC_ID_NONE,
+    .write_header      = wsaud_write_header,
+    .write_packet      = wsaud_write_packet,
+    .write_trailer     = wsaud_write_trailer,
+};

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to