[FFmpeg-devel] [PATCH 5/5] avformat/smacker: Cosmetics
Andreas Rheinhardt
andreas.rheinhardt at gmail.com
Sun Mar 29 14:13:25 EEST 2020
This is mainly about improving legibility of the code and getting rid of
overlong lines by using variables for st->codecpar instead of accessing
the codec parameters via st->codecpar->.
Also, some code has been moved to better fitting places.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
---
libavformat/smacker.c | 75 +++++++++++++++++++++++--------------------
1 file changed, 40 insertions(+), 35 deletions(-)
diff --git a/libavformat/smacker.c b/libavformat/smacker.c
index c934615c54..8b1e185817 100644
--- a/libavformat/smacker.c
+++ b/libavformat/smacker.c
@@ -91,6 +91,7 @@ static int smacker_read_header(AVFormatContext *s)
AVIOContext *pb = s->pb;
SmackerContext *smk = s->priv_data;
AVStream *st;
+ AVCodecParameters *par;
uint32_t magic, width, height, flags, treesize;
int i, ret, pts_inc;
int tbase;
@@ -129,6 +130,7 @@ static int smacker_read_header(AVFormatContext *s)
if (!st)
return AVERROR(ENOMEM);
+ smk->videoindex = st->index;
/* Smacker uses 100000 as internal timebase */
if (pts_inc < 0)
pts_inc = -pts_inc;
@@ -137,23 +139,28 @@ static int smacker_read_header(AVFormatContext *s)
tbase = 100000;
av_reduce(&tbase, &pts_inc, tbase, pts_inc, (1UL << 31) - 1);
avpriv_set_pts_info(st, 33, pts_inc, tbase);
+ st->duration = smk->frames;
/* init video codec */
- st->codecpar->width = width;
- st->codecpar->height = height;
- st->codecpar->codec_tag = magic;
-
- if ((ret = ff_alloc_extradata(st->codecpar, treesize + 16)) < 0) {
+ par = st->codecpar;
+ par->width = width;
+ par->height = height;
+ par->format = AV_PIX_FMT_PAL8;
+ par->codec_type = AVMEDIA_TYPE_VIDEO;
+ par->codec_id = AV_CODEC_ID_SMACKVIDEO;
+ par->codec_tag = magic;
+
+ if ((ret = ff_alloc_extradata(par, treesize + 16)) < 0) {
av_log(s, AV_LOG_ERROR,
"Cannot allocate %"PRIu32" bytes of extradata\n",
treesize + 16);
return ret;
}
- if ((ret = ffio_read_size(pb, st->codecpar->extradata, 16)) < 0)
+ if ((ret = ffio_read_size(pb, par->extradata, 16)) < 0)
return ret;
/* handle possible audio streams */
- for(i = 0; i < 7; i++) {
+ for (i = 0; i < 7; i++) {
uint32_t rate = avio_rl24(pb);
uint8_t aflag = avio_r8(pb);
@@ -161,40 +168,44 @@ static int smacker_read_header(AVFormatContext *s)
if (rate) {
AVStream *ast = avformat_new_stream(s, NULL);
+ AVCodecParameters *par;
if (!ast)
return AVERROR(ENOMEM);
smk->indexes[i] = ast->index;
- ast->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
+ par = ast->codecpar;
+ par->codec_type = AVMEDIA_TYPE_AUDIO;
if (aflag & SMK_AUD_BINKAUD) {
- ast->codecpar->codec_id = AV_CODEC_ID_BINKAUDIO_RDFT;
+ par->codec_id = AV_CODEC_ID_BINKAUDIO_RDFT;
} else if (aflag & SMK_AUD_USEDCT) {
- ast->codecpar->codec_id = AV_CODEC_ID_BINKAUDIO_DCT;
+ par->codec_id = AV_CODEC_ID_BINKAUDIO_DCT;
} else if (aflag & SMK_AUD_PACKED) {
- ast->codecpar->codec_id = AV_CODEC_ID_SMACKAUDIO;
- ast->codecpar->codec_tag = MKTAG('S', 'M', 'K', 'A');
+ par->codec_id = AV_CODEC_ID_SMACKAUDIO;
+ par->codec_tag = MKTAG('S', 'M', 'K', 'A');
} else {
- ast->codecpar->codec_id = AV_CODEC_ID_PCM_U8;
+ par->codec_id = AV_CODEC_ID_PCM_U8;
}
if (aflag & SMK_AUD_STEREO) {
- ast->codecpar->channels = 2;
- ast->codecpar->channel_layout = AV_CH_LAYOUT_STEREO;
+ par->channels = 2;
+ par->channel_layout = AV_CH_LAYOUT_STEREO;
} else {
- ast->codecpar->channels = 1;
- ast->codecpar->channel_layout = AV_CH_LAYOUT_MONO;
+ par->channels = 1;
+ par->channel_layout = AV_CH_LAYOUT_MONO;
}
- ast->codecpar->sample_rate = rate;
- ast->codecpar->bits_per_coded_sample = (aflag & SMK_AUD_16BITS) ? 16 : 8;
- if (ast->codecpar->bits_per_coded_sample == 16 &&
- ast->codecpar->codec_id == AV_CODEC_ID_PCM_U8)
- ast->codecpar->codec_id = AV_CODEC_ID_PCM_S16LE;
- avpriv_set_pts_info(ast, 64, 1, ast->codecpar->sample_rate
- * ast->codecpar->channels * ast->codecpar->bits_per_coded_sample / 8);
+ par->sample_rate = rate;
+ par->bits_per_coded_sample = (aflag & SMK_AUD_16BITS) ? 16 : 8;
+ if (par->bits_per_coded_sample == 16 &&
+ par->codec_id == AV_CODEC_ID_PCM_U8)
+ par->codec_id = AV_CODEC_ID_PCM_S16LE;
+ avpriv_set_pts_info(ast, 64, 1, par->sample_rate * par->channels
+ * par->bits_per_coded_sample / 8);
}
}
+
avio_rl32(pb); /* padding */
+
/* setup data */
- smk->frm_size = av_malloc_array(smk->frames, sizeof(*smk->frm_size));
+ smk->frm_size = av_malloc_array(smk->frames, sizeof(*smk->frm_size));
smk->frm_flags = av_malloc(smk->frames);
if (!smk->frm_size || !smk->frm_flags) {
av_freep(&smk->frm_size);
@@ -203,22 +214,16 @@ static int smacker_read_header(AVFormatContext *s)
}
/* read frame info */
- for(i = 0; i < smk->frames; i++) {
+ for (i = 0; i < smk->frames; i++) {
smk->frm_size[i] = avio_rl32(pb);
}
- for(i = 0; i < smk->frames; i++) {
+ for (i = 0; i < smk->frames; i++) {
smk->frm_flags[i] = avio_r8(pb);
}
- smk->videoindex = st->index;
- st->codecpar->format = AV_PIX_FMT_PAL8;
- st->codecpar->codec_type = AVMEDIA_TYPE_VIDEO;
- st->codecpar->codec_id = AV_CODEC_ID_SMACKVIDEO;
- st->duration = smk->frames;
-
/* load trees to extradata, they will be unpacked by decoder */
- ret = avio_read(pb, st->codecpar->extradata + 16, st->codecpar->extradata_size - 16);
- if(ret != st->codecpar->extradata_size - 16){
+ ret = avio_read(pb, par->extradata + 16, par->extradata_size - 16);
+ if (ret != par->extradata_size - 16) {
av_freep(&smk->frm_size);
av_freep(&smk->frm_flags);
return AVERROR(EIO);
--
2.20.1
More information about the ffmpeg-devel
mailing list