On 23/11/21 16:18, Peter Ross wrote:
index cbfadcb639..1054ac9667 100644
--- a/libavformat/allformats.c
+++ b/libavformat/allformats.c
@@ -392,6 +392,7 @@ extern const AVOutputFormat ff_sbc_muxer;
extern const AVInputFormat ff_sbg_demuxer;
extern const AVInputFormat ff_scc_demuxer;
extern const AVOutputFormat ff_scc_muxer;
+extern const AVInputFormat ff_scd_demuxer;
extern const AVInputFormat ff_sdp_demuxer;
extern const AVInputFormat ff_sdr2_demuxer;
extern const AVInputFormat ff_sds_demuxer;
the indentation here is inconsistent.
I think there may be something wrong with your viewer, all the indentation
looks fine to me.
Does it look fine here?
https://ffmpeg.org/pipermail/ffmpeg-devel/2021-November/287508.html
+static int scd_read_offsets(AVFormatContext *s)
+{
+ int64_t ret;
+ SCDDemuxContext *ctx = s->priv_data;
+ uint8_t buf[SCD_OFFSET_HEADER_SIZE];
+
+ if ((ret = avio_read(s->pb, buf, SCD_OFFSET_HEADER_SIZE)) < 0)
+ return ret;
+
+ ctx->hdr.table0.count = AV_RB16(buf + 0);
+ ctx->hdr.table1.count = AV_RB16(buf + 2);
+ ctx->hdr.table2.count = AV_RB16(buf + 4);
+ ctx->hdr.unk2 = AV_RB16(buf + 6);
+ ctx->hdr.table0.offset = AV_RB32(buf + 8);
+ ctx->hdr.table1.offset = AV_RB32(buf + 12);
+ ctx->hdr.table2.offset = AV_RB32(buf + 16);
+ ctx->hdr.unk3 = AV_RB32(buf + 20);
+ ctx->hdr.unk4 = AV_RB32(buf + 24);
is there any reason why you read the values into buf?
why not use avio_rb16/32(pb) to directly read the values. this is how other
demuxers do it.
also use avio_skip(pb, xxx) to skip over the unknown values.
this saves having to define the structures and defining xxx_HEADER_SIZE.
#notalldemuxers - See argo_{asf,cvg,brp}, pp_bnk, kvag, alp, etc.
Jokes aside, I've always avoided avio_rbxx() because of the potential need for
error handling.
I find it nicer to do one big read and AV_RBXX() it out, than avio_rbxx() each
field.
As for structures and xxx_HEADER_SIZE - I find it's helpful for future
documentation and
debugging purposes. It's nice to be able to look at the header structure when
debugging,
for example.
The `buf + XX` also makes it clear what the field offsets are.
+
+ track->length = AV_RB32(buf + 0);
+ track->num_channels = AV_RB32(buf + 4);
+ track->sample_rate = AV_RB32(buf + 8);
+ track->data_type = AV_RB32(buf + 12);
+ track->loop_start = AV_RB32(buf + 16);
+ track->loop_end = AV_RB32(buf + 20);
+ track->data_offset = AV_RB32(buf + 24);
+ track->aux_count = AV_RB32(buf + 28);
ditto
Ditto to your ditto.
_______________________________________________
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".