diff options
Diffstat (limited to 'src/codec/ffmpeg/packet_ext.c')
| -rw-r--r-- | src/codec/ffmpeg/packet_ext.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/codec/ffmpeg/packet_ext.c b/src/codec/ffmpeg/packet_ext.c index 6934cfe..8f44caa 100644 --- a/src/codec/ffmpeg/packet_ext.c +++ b/src/codec/ffmpeg/packet_ext.c @@ -6,7 +6,9 @@ void nn_packet_write_av_codec_parameters(struct nn_packet *packet, AVCodecParame NNWT_PACKET_WRITE_TYPE(packet, enum AVCodecID, codecpar->codec_id); NNWT_PACKET_WRITE_TYPE(packet, u32, codecpar->codec_tag); NNWT_PACKET_WRITE_TYPE(packet, s32, codecpar->extradata_size); - NNWT_PACKET_WRITE_DATA(packet, codecpar->extradata, codecpar->extradata_size); + if (codecpar->extradata_size) { + NNWT_PACKET_WRITE_DATA(packet, codecpar->extradata, codecpar->extradata_size); + } NNWT_PACKET_WRITE_TYPE(packet, s32, codecpar->format); NNWT_PACKET_WRITE_TYPE(packet, s64, codecpar->bit_rate); NNWT_PACKET_WRITE_TYPE(packet, s32, codecpar->bits_per_coded_sample); @@ -118,10 +120,12 @@ void nn_packet_read_av_codec_parameters(struct nn_packet *packet, AVCodecParamet NNWT_PACKET_READ_TYPE(packet, enum AVCodecID, codecpar->codec_id); NNWT_PACKET_READ_TYPE(packet, u32, codecpar->codec_tag); NNWT_PACKET_READ_TYPE(packet, s32, codecpar->extradata_size); - codecpar->extradata = (u8 *)av_malloc(codecpar->extradata_size); - u8 *extradata; - NNWT_PACKET_READ_DATA(packet, codecpar->extradata_size, extradata); - al_memcpy(codecpar->extradata, extradata, codecpar->extradata_size); + if (codecpar->extradata_size > 0) { + codecpar->extradata = (u8 *)av_malloc(codecpar->extradata_size); + u8 *extradata; + NNWT_PACKET_READ_DATA(packet, codecpar->extradata_size, extradata); + al_memcpy(codecpar->extradata, extradata, codecpar->extradata_size); + } NNWT_PACKET_READ_TYPE(packet, s32, codecpar->format); NNWT_PACKET_READ_TYPE(packet, s64, codecpar->bit_rate); NNWT_PACKET_READ_TYPE(packet, s32, codecpar->bits_per_coded_sample); |