mirror of
https://github.com/nu774/fdkaac.git
synced 2025-01-30 23:35:00 +01:00
write actual number of channels to mp4a box
This commit is contained in:
parent
1acf5c2d4d
commit
fcfed4cd0c
14
src/m4af.c
14
src/m4af.c
@ -42,6 +42,7 @@ typedef struct m4af_chunk_entry_t {
|
||||
typedef struct m4af_track_t {
|
||||
uint32_t codec;
|
||||
uint32_t timescale;
|
||||
uint16_t num_channels;
|
||||
int64_t creation_time;
|
||||
int64_t modification_time;
|
||||
int64_t duration;
|
||||
@ -211,6 +212,7 @@ m4af_ctx_t *m4af_create(uint32_t codec, uint32_t timescale,
|
||||
ctx->track[0].timescale = timescale;
|
||||
ctx->track[0].creation_time = timestamp;
|
||||
ctx->track[0].modification_time = timestamp;
|
||||
ctx->track[0].num_channels = 2;
|
||||
return ctx;
|
||||
}
|
||||
|
||||
@ -254,6 +256,12 @@ void m4af_teardown(m4af_ctx_t **ctxp)
|
||||
*ctxp = 0;
|
||||
}
|
||||
|
||||
void m4af_set_num_channels(m4af_ctx_t *ctx, uint32_t track_idx,
|
||||
uint16_t channels)
|
||||
{
|
||||
ctx->track[track_idx].num_channels = channels;
|
||||
}
|
||||
|
||||
void m4af_set_fixed_frame_duration(m4af_ctx_t *ctx, uint32_t track_idx,
|
||||
uint32_t length)
|
||||
{
|
||||
@ -816,11 +824,13 @@ void m4af_write_mp4a_box(m4af_ctx_t *ctx, uint32_t track_idx)
|
||||
"\0\001" /* data_reference_index: 1 */
|
||||
"\0\0\0\0" /* reserved[0] */
|
||||
"\0\0\0\0" /* reserved[1] */
|
||||
"\0\002" /* channelcount: 2 */
|
||||
,16);
|
||||
m4af_write16(ctx, track->num_channels);
|
||||
m4af_write(ctx,
|
||||
"\0\020" /* samplesize: 16 */
|
||||
"\0\0" /* pre_defined */
|
||||
"\0\0" /* reserved */
|
||||
,24);
|
||||
,6);
|
||||
if (track->codec == M4AF_FOURCC('m','p','4','a')) {
|
||||
m4af_write32(ctx, track->timescale << 16);
|
||||
m4af_write_esds_box(ctx, track_idx);
|
||||
|
@ -104,6 +104,9 @@ void m4af_set_priming(m4af_ctx_t *ctx, uint32_t track_idx,
|
||||
|
||||
void m4af_set_priming_mode(m4af_ctx_t *ctx, int mode);
|
||||
|
||||
void m4af_set_num_channels(m4af_ctx_t *ctx, uint32_t track_idx,
|
||||
uint16_t channels);
|
||||
|
||||
void m4af_set_fixed_frame_duration(m4af_ctx_t *ctx, uint32_t track_idx,
|
||||
uint32_t length);
|
||||
|
||||
|
@ -824,6 +824,7 @@ int main(int argc, char **argv)
|
||||
if ((m4af = m4af_create(M4AF_CODEC_MP4A, scale, &m4af_io,
|
||||
params.output_fp)) < 0)
|
||||
goto END;
|
||||
m4af_set_num_channels(m4af, 0, sample_format->channels_per_frame);
|
||||
m4af_set_decoder_specific_info(m4af, 0,
|
||||
aacinfo.confBuf, aacinfo.confSize);
|
||||
m4af_set_fixed_frame_duration(m4af, 0, framelen >> scale_shift);
|
||||
|
Loading…
x
Reference in New Issue
Block a user