mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-27 18:02:11 +00:00
Merge commit '72025ac36c740f031d7e413041fdfe97087c83c4'
* commit '72025ac36c740f031d7e413041fdfe97087c83c4':
lavc: add libdcadec decoder
Conflicts:
Changelog
configure
libavcodec/Makefile
libavcodec/allcodecs.c
libavcodec/libdcadec.c
See: 519868de7d
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
93704e09c7
@ -6,7 +6,7 @@ version <next>:
|
|||||||
- TDSC decoder
|
- TDSC decoder
|
||||||
- DTS lossless extension (XLL) decoding (not lossless, disabled by default)
|
- DTS lossless extension (XLL) decoding (not lossless, disabled by default)
|
||||||
- showwavespic filter
|
- showwavespic filter
|
||||||
- libdcadec wrapper
|
- DTS decoding through libdcadec
|
||||||
- Drop support for nvenc API before 5.0
|
- Drop support for nvenc API before 5.0
|
||||||
- nvenc H265 encoder
|
- nvenc H265 encoder
|
||||||
- Detelecine filter
|
- Detelecine filter
|
||||||
|
@ -736,7 +736,7 @@ OBJS-$(CONFIG_ELBG_FILTER) += elbg.o
|
|||||||
# external codec libraries
|
# external codec libraries
|
||||||
OBJS-$(CONFIG_LIBAACPLUS_ENCODER) += libaacplus.o
|
OBJS-$(CONFIG_LIBAACPLUS_ENCODER) += libaacplus.o
|
||||||
OBJS-$(CONFIG_LIBCELT_DECODER) += libcelt_dec.o
|
OBJS-$(CONFIG_LIBCELT_DECODER) += libcelt_dec.o
|
||||||
OBJS-$(CONFIG_LIBDCADEC_DECODER) += libdcadec.o
|
OBJS-$(CONFIG_LIBDCADEC_DECODER) += libdcadec.o dca.o
|
||||||
OBJS-$(CONFIG_LIBFAAC_ENCODER) += libfaac.o
|
OBJS-$(CONFIG_LIBFAAC_ENCODER) += libfaac.o
|
||||||
OBJS-$(CONFIG_LIBFDK_AAC_DECODER) += libfdk-aacdec.o
|
OBJS-$(CONFIG_LIBFDK_AAC_DECODER) += libfdk-aacdec.o
|
||||||
OBJS-$(CONFIG_LIBFDK_AAC_ENCODER) += libfdk-aacenc.o
|
OBJS-$(CONFIG_LIBFDK_AAC_ENCODER) += libfdk-aacenc.o
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include "libavutil/channel_layout.h"
|
#include "libavutil/channel_layout.h"
|
||||||
#include "libavutil/common.h"
|
#include "libavutil/common.h"
|
||||||
#include "libavutil/opt.h"
|
#include "libavutil/opt.h"
|
||||||
|
|
||||||
#include "avcodec.h"
|
#include "avcodec.h"
|
||||||
#include "dca.h"
|
#include "dca.h"
|
||||||
#include "dca_syncwords.h"
|
#include "dca_syncwords.h"
|
||||||
@ -48,6 +49,10 @@ static int dcadec_decode_frame(AVCodecContext *avctx, void *data,
|
|||||||
int input_size = avpkt->size;
|
int input_size = avpkt->size;
|
||||||
|
|
||||||
/* convert bytestream syntax to RAW BE format if required */
|
/* convert bytestream syntax to RAW BE format if required */
|
||||||
|
if (input_size < 8) {
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "Input size too small\n");
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
|
}
|
||||||
mrk = AV_RB32(input);
|
mrk = AV_RB32(input);
|
||||||
if (mrk != DCA_SYNCWORD_CORE_BE && mrk != DCA_SYNCWORD_SUBSTREAM) {
|
if (mrk != DCA_SYNCWORD_CORE_BE && mrk != DCA_SYNCWORD_SUBSTREAM) {
|
||||||
s->buffer = av_fast_realloc(s->buffer, &s->buffer_size, avpkt->size + FF_INPUT_BUFFER_PADDING_SIZE);
|
s->buffer = av_fast_realloc(s->buffer, &s->buffer_size, avpkt->size + FF_INPUT_BUFFER_PADDING_SIZE);
|
||||||
@ -75,11 +80,16 @@ static int dcadec_decode_frame(AVCodecContext *avctx, void *data,
|
|||||||
avctx->channel_layout = channel_mask;
|
avctx->channel_layout = channel_mask;
|
||||||
avctx->sample_rate = sample_rate;
|
avctx->sample_rate = sample_rate;
|
||||||
|
|
||||||
av_assert0(bits_per_sample >= 16 && bits_per_sample <= 24);
|
av_assert0(bits_per_sample >= 16);
|
||||||
if (bits_per_sample == 16)
|
if (bits_per_sample == 16)
|
||||||
avctx->sample_fmt = AV_SAMPLE_FMT_S16P;
|
avctx->sample_fmt = AV_SAMPLE_FMT_S16P;
|
||||||
else
|
else if (bits_per_sample <= 24)
|
||||||
avctx->sample_fmt = AV_SAMPLE_FMT_S32P;
|
avctx->sample_fmt = AV_SAMPLE_FMT_S32P;
|
||||||
|
else {
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "Unsupported number of bits per sample: %d\n",
|
||||||
|
bits_per_sample);
|
||||||
|
return AVERROR(ENOSYS);
|
||||||
|
}
|
||||||
|
|
||||||
avctx->bits_per_raw_sample = bits_per_sample;
|
avctx->bits_per_raw_sample = bits_per_sample;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user