Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
e259dc86
Commit
e259dc86
authored
Mar 25, 2016
by
Kieran Kunhya
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avcodec: Remove libdcadec, we already have it merged internally
parent
c50be7a5
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
2 additions
and
319 deletions
+2
-319
Changelog
Changelog
+1
-1
configure
configure
+0
-4
Makefile
libavcodec/Makefile
+0
-1
allcodecs.c
libavcodec/allcodecs.c
+0
-1
libdcadec.c
libavcodec/libdcadec.c
+0
-311
version.h
libavcodec/version.h
+1
-1
No files found.
Changelog
View file @
e259dc86
...
...
@@ -16,7 +16,7 @@ version <next>:
- AudioToolbox audio decoders
- AudioToolbox audio encoders
- coreimage filter (GPU based image filtering on OSX)
- libdcadec removed
version 3.0:
- Common Encryption (CENC) MP4 encoding and decoding support
...
...
configure
View file @
e259dc86
...
...
@@ -219,7 +219,6 @@ External library support:
--enable-libcdio enable audio CD grabbing with libcdio [no]
--enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
and libraw1394 [no]
--enable-libdcadec enable DCA decoding via libdcadec [no]
--enable-libfaac enable AAC encoding via libfaac [no]
--enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no]
--enable-libflite enable flite (voice synthesis) support via libflite [no]
...
...
@@ -1468,7 +1467,6 @@ EXTERNAL_LIBRARY_LIST="
libcdio
libcelt
libdc1394
libdcadec
libfaac
libfdk_aac
libflite
...
...
@@ -2674,7 +2672,6 @@ pcm_mulaw_at_encoder_select="audio_frame_queue"
chromaprint_muxer_deps
=
"chromaprint"
h264_videotoolbox_encoder_deps
=
"videotoolbox_encoder pthreads"
libcelt_decoder_deps
=
"libcelt"
libdcadec_decoder_deps
=
"libdcadec"
libfaac_encoder_deps
=
"libfaac"
libfaac_encoder_select
=
"audio_frame_queue"
libfdk_aac_decoder_deps
=
"libfdk_aac"
...
...
@@ -5535,7 +5532,6 @@ enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
{
check_lib celt/celt.h celt_decoder_create_custom
-lcelt0
||
die
"ERROR: libcelt must be installed and version must be >= 0.11.0."
;
}
enabled libcaca
&&
require_pkg_config caca caca.h caca_create_canvas
enabled libdcadec
&&
require_pkg_config
"dcadec >= 0.1.0"
libdcadec/dca_context.h dcadec_context_create
enabled libfaac
&&
require2 libfaac
"stdint.h faac.h"
faacEncGetVersion
-lfaac
enabled libfdk_aac
&&
{
use_pkg_config fdk-aac
"fdk-aac/aacenc_lib.h"
aacEncOpen
||
{
require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen
-lfdk-aac
&&
...
...
libavcodec/Makefile
View file @
e259dc86
...
...
@@ -821,7 +821,6 @@ OBJS-$(CONFIG_ILBC_AT_ENCODER) += audiotoolboxenc.o
OBJS-$(CONFIG_PCM_ALAW_AT_ENCODER)
+=
audiotoolboxenc.o
OBJS-$(CONFIG_PCM_MULAW_AT_ENCODER)
+=
audiotoolboxenc.o
OBJS-$(CONFIG_LIBCELT_DECODER)
+=
libcelt_dec.o
OBJS-$(CONFIG_LIBDCADEC_DECODER)
+=
libdcadec.o
dca.o
OBJS-$(CONFIG_LIBFAAC_ENCODER)
+=
libfaac.o
OBJS-$(CONFIG_LIBFDK_AAC_DECODER)
+=
libfdk-aacdec.o
OBJS-$(CONFIG_LIBFDK_AAC_ENCODER)
+=
libfdk-aacenc.o
...
...
libavcodec/allcodecs.c
View file @
e259dc86
...
...
@@ -578,7 +578,6 @@ void avcodec_register_all(void)
REGISTER_DECODER
(
QDMC_AT
,
qdmc_at
);
REGISTER_DECODER
(
QDM2_AT
,
qdm2_at
);
REGISTER_DECODER
(
LIBCELT
,
libcelt
);
REGISTER_DECODER
(
LIBDCADEC
,
libdcadec
)
REGISTER_ENCODER
(
LIBFAAC
,
libfaac
);
REGISTER_ENCDEC
(
LIBFDK_AAC
,
libfdk_aac
);
REGISTER_ENCDEC
(
LIBGSM
,
libgsm
);
...
...
libavcodec/libdcadec.c
deleted
100644 → 0
View file @
c50be7a5
/*
* libdcadec decoder wrapper
* Copyright (C) 2015 Hendrik Leppkes
*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <libdcadec/dca_context.h>
#include "libavutil/channel_layout.h"
#include "libavutil/common.h"
#include "libavutil/opt.h"
#include "avcodec.h"
#include "dca.h"
#include "dca_syncwords.h"
#include "internal.h"
#include "profiles.h"
typedef
struct
DCADecContext
{
const
AVClass
*
class
;
struct
dcadec_context
*
ctx
;
uint8_t
*
buffer
;
int
buffer_size
;
int
lfe_filter
;
int
core_only
;
}
DCADecContext
;
static
void
my_log_cb
(
int
level
,
const
char
*
file
,
int
line
,
const
char
*
message
,
void
*
cbarg
)
{
int
av_level
;
switch
(
level
)
{
case
DCADEC_LOG_ERROR
:
av_level
=
AV_LOG_ERROR
;
break
;
case
DCADEC_LOG_WARNING
:
av_level
=
AV_LOG_WARNING
;
break
;
case
DCADEC_LOG_INFO
:
av_level
=
AV_LOG_INFO
;
break
;
case
DCADEC_LOG_VERBOSE
:
av_level
=
AV_LOG_VERBOSE
;
break
;
case
DCADEC_LOG_DEBUG
:
default:
av_level
=
AV_LOG_DEBUG
;
break
;
}
av_log
(
cbarg
,
av_level
,
"%s
\n
"
,
message
);
}
static
int
dcadec_decode_frame
(
AVCodecContext
*
avctx
,
void
*
data
,
int
*
got_frame_ptr
,
AVPacket
*
avpkt
)
{
DCADecContext
*
s
=
avctx
->
priv_data
;
AVFrame
*
frame
=
data
;
struct
dcadec_exss_info
*
exss
;
int
ret
,
i
,
k
;
int
**
samples
,
nsamples
,
channel_mask
,
sample_rate
,
bits_per_sample
,
profile
;
uint32_t
mrk
;
uint8_t
*
input
=
avpkt
->
data
;
int
input_size
=
avpkt
->
size
;
/* 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
);
if
(
mrk
!=
DCA_SYNCWORD_CORE_BE
&&
mrk
!=
DCA_SYNCWORD_SUBSTREAM
)
{
s
->
buffer
=
av_fast_realloc
(
s
->
buffer
,
&
s
->
buffer_size
,
avpkt
->
size
+
AV_INPUT_BUFFER_PADDING_SIZE
);
if
(
!
s
->
buffer
)
return
AVERROR
(
ENOMEM
);
for
(
i
=
0
,
ret
=
AVERROR_INVALIDDATA
;
i
<
input_size
-
3
&&
ret
<
0
;
i
++
)
ret
=
avpriv_dca_convert_bitstream
(
input
+
i
,
input_size
-
i
,
s
->
buffer
,
s
->
buffer_size
);
if
(
ret
<
0
)
return
ret
;
input
=
s
->
buffer
;
input_size
=
ret
;
}
if
((
ret
=
dcadec_context_parse
(
s
->
ctx
,
input
,
input_size
))
<
0
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"dcadec_context_parse() failed: %d (%s)
\n
"
,
-
ret
,
dcadec_strerror
(
ret
));
return
AVERROR_EXTERNAL
;
}
if
((
ret
=
dcadec_context_filter
(
s
->
ctx
,
&
samples
,
&
nsamples
,
&
channel_mask
,
&
sample_rate
,
&
bits_per_sample
,
&
profile
))
<
0
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"dcadec_context_filter() failed: %d (%s)
\n
"
,
-
ret
,
dcadec_strerror
(
ret
));
return
AVERROR_EXTERNAL
;
}
avctx
->
channels
=
av_get_channel_layout_nb_channels
(
channel_mask
);
avctx
->
channel_layout
=
channel_mask
;
avctx
->
sample_rate
=
sample_rate
;
if
(
bits_per_sample
==
16
)
avctx
->
sample_fmt
=
AV_SAMPLE_FMT_S16P
;
else
if
(
bits_per_sample
>
16
&&
bits_per_sample
<=
24
)
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
;
switch
(
profile
)
{
case
DCADEC_PROFILE_DS
:
avctx
->
profile
=
FF_PROFILE_DTS
;
break
;
case
DCADEC_PROFILE_DS_96_24
:
avctx
->
profile
=
FF_PROFILE_DTS_96_24
;
break
;
case
DCADEC_PROFILE_DS_ES
:
avctx
->
profile
=
FF_PROFILE_DTS_ES
;
break
;
case
DCADEC_PROFILE_HD_HRA
:
avctx
->
profile
=
FF_PROFILE_DTS_HD_HRA
;
break
;
case
DCADEC_PROFILE_HD_MA
:
avctx
->
profile
=
FF_PROFILE_DTS_HD_MA
;
break
;
case
DCADEC_PROFILE_EXPRESS
:
avctx
->
profile
=
FF_PROFILE_DTS_EXPRESS
;
break
;
case
DCADEC_PROFILE_UNKNOWN
:
default:
avctx
->
profile
=
FF_PROFILE_UNKNOWN
;
break
;
}
/* bitrate is only meaningful if there are no HD extensions, as they distort the bitrate */
if
(
profile
==
DCADEC_PROFILE_DS
||
profile
==
DCADEC_PROFILE_DS_96_24
||
profile
==
DCADEC_PROFILE_DS_ES
)
{
struct
dcadec_core_info
*
info
=
dcadec_context_get_core_info
(
s
->
ctx
);
avctx
->
bit_rate
=
info
->
bit_rate
;
dcadec_context_free_core_info
(
info
);
}
else
avctx
->
bit_rate
=
0
;
if
(
exss
=
dcadec_context_get_exss_info
(
s
->
ctx
))
{
enum
AVMatrixEncoding
matrix_encoding
=
AV_MATRIX_ENCODING_NONE
;
switch
(
exss
->
matrix_encoding
)
{
case
DCADEC_MATRIX_ENCODING_SURROUND
:
matrix_encoding
=
AV_MATRIX_ENCODING_DOLBY
;
break
;
case
DCADEC_MATRIX_ENCODING_HEADPHONE
:
matrix_encoding
=
AV_MATRIX_ENCODING_DOLBYHEADPHONE
;
break
;
}
dcadec_context_free_exss_info
(
exss
);
if
(
matrix_encoding
!=
AV_MATRIX_ENCODING_NONE
&&
(
ret
=
ff_side_data_update_matrix_encoding
(
frame
,
matrix_encoding
))
<
0
)
return
ret
;
}
frame
->
nb_samples
=
nsamples
;
if
((
ret
=
ff_get_buffer
(
avctx
,
frame
,
0
))
<
0
)
return
ret
;
for
(
i
=
0
;
i
<
avctx
->
channels
;
i
++
)
{
if
(
frame
->
format
==
AV_SAMPLE_FMT_S16P
)
{
int16_t
*
plane
=
(
int16_t
*
)
frame
->
extended_data
[
i
];
for
(
k
=
0
;
k
<
nsamples
;
k
++
)
plane
[
k
]
=
samples
[
i
][
k
];
}
else
{
int32_t
*
plane
=
(
int32_t
*
)
frame
->
extended_data
[
i
];
int
shift
=
32
-
bits_per_sample
;
for
(
k
=
0
;
k
<
nsamples
;
k
++
)
plane
[
k
]
=
samples
[
i
][
k
]
<<
shift
;
}
}
*
got_frame_ptr
=
1
;
return
avpkt
->
size
;
}
static
av_cold
void
dcadec_flush
(
AVCodecContext
*
avctx
)
{
DCADecContext
*
s
=
avctx
->
priv_data
;
dcadec_context_clear
(
s
->
ctx
);
}
static
av_cold
int
dcadec_close
(
AVCodecContext
*
avctx
)
{
DCADecContext
*
s
=
avctx
->
priv_data
;
dcadec_context_destroy
(
s
->
ctx
);
s
->
ctx
=
NULL
;
av_freep
(
&
s
->
buffer
);
return
0
;
}
static
av_cold
int
dcadec_init
(
AVCodecContext
*
avctx
)
{
DCADecContext
*
s
=
avctx
->
priv_data
;
int
flags
=
0
;
/* Affects only lossy DTS profiles. DTS-HD MA is always bitexact */
if
(
avctx
->
flags
&
AV_CODEC_FLAG_BITEXACT
)
flags
|=
DCADEC_FLAG_CORE_BIT_EXACT
;
if
(
avctx
->
err_recognition
&
AV_EF_EXPLODE
)
flags
|=
DCADEC_FLAG_STRICT
;
if
(
avctx
->
request_channel_layout
)
{
switch
(
avctx
->
request_channel_layout
)
{
case
AV_CH_LAYOUT_STEREO
:
case
AV_CH_LAYOUT_STEREO_DOWNMIX
:
flags
|=
DCADEC_FLAG_KEEP_DMIX_2CH
;
break
;
case
AV_CH_LAYOUT_5POINT1
:
flags
|=
DCADEC_FLAG_KEEP_DMIX_6CH
;
break
;
case
AV_CH_LAYOUT_NATIVE
:
flags
|=
DCADEC_FLAG_NATIVE_LAYOUT
;
break
;
default:
av_log
(
avctx
,
AV_LOG_WARNING
,
"Invalid request_channel_layout
\n
"
);
break
;
}
}
if
(
s
->
core_only
)
flags
|=
DCADEC_FLAG_CORE_ONLY
;
switch
(
s
->
lfe_filter
)
{
#if DCADEC_API_VERSION >= DCADEC_VERSION_CODE(0, 1, 0)
case
1
:
flags
|=
DCADEC_FLAG_CORE_LFE_IIR
;
break
;
#endif
case
2
:
flags
|=
DCADEC_FLAG_CORE_LFE_FIR
;
break
;
}
s
->
ctx
=
dcadec_context_create
(
flags
);
if
(
!
s
->
ctx
)
return
AVERROR
(
ENOMEM
);
dcadec_context_set_log_cb
(
s
->
ctx
,
my_log_cb
,
avctx
);
avctx
->
sample_fmt
=
AV_SAMPLE_FMT_S32P
;
avctx
->
bits_per_raw_sample
=
24
;
return
0
;
}
#define OFFSET(x) offsetof(DCADecContext, x)
#define PARAM AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_DECODING_PARAM
static
const
AVOption
dcadec_options
[]
=
{
{
"lfe_filter"
,
"Lossy LFE channel interpolation filter"
,
OFFSET
(
lfe_filter
),
AV_OPT_TYPE_INT
,
{
.
i64
=
0
},
0
,
2
,
PARAM
,
"lfe_filter"
},
{
"default"
,
"Library default"
,
0
,
AV_OPT_TYPE_CONST
,
{
.
i64
=
0
},
INT_MIN
,
INT_MAX
,
PARAM
,
"lfe_filter"
},
{
"iir"
,
"IIR filter"
,
0
,
AV_OPT_TYPE_CONST
,
{
.
i64
=
1
},
INT_MIN
,
INT_MAX
,
PARAM
,
"lfe_filter"
},
{
"fir"
,
"FIR filter"
,
0
,
AV_OPT_TYPE_CONST
,
{
.
i64
=
2
},
INT_MIN
,
INT_MAX
,
PARAM
,
"lfe_filter"
},
{
"core_only"
,
"Decode core only without extensions"
,
OFFSET
(
core_only
),
AV_OPT_TYPE_BOOL
,
{
.
i64
=
0
},
0
,
1
,
PARAM
},
{
NULL
}
};
static
const
AVClass
dcadec_class
=
{
.
class_name
=
"libdcadec decoder"
,
.
item_name
=
av_default_item_name
,
.
option
=
dcadec_options
,
.
version
=
LIBAVUTIL_VERSION_INT
,
.
category
=
AV_CLASS_CATEGORY_DECODER
,
};
AVCodec
ff_libdcadec_decoder
=
{
.
name
=
"libdcadec"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"dcadec DCA decoder"
),
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
id
=
AV_CODEC_ID_DTS
,
.
priv_data_size
=
sizeof
(
DCADecContext
),
.
init
=
dcadec_init
,
.
decode
=
dcadec_decode_frame
,
.
close
=
dcadec_close
,
.
flush
=
dcadec_flush
,
.
capabilities
=
AV_CODEC_CAP_DR1
|
AV_CODEC_CAP_CHANNEL_CONF
,
.
sample_fmts
=
(
const
enum
AVSampleFormat
[])
{
AV_SAMPLE_FMT_S32P
,
AV_SAMPLE_FMT_S16P
,
AV_SAMPLE_FMT_NONE
},
.
priv_class
=
&
dcadec_class
,
.
profiles
=
NULL_IF_CONFIG_SMALL
(
ff_dca_profiles
),
};
libavcodec/version.h
View file @
e259dc86
...
...
@@ -28,7 +28,7 @@
#include "libavutil/version.h"
#define LIBAVCODEC_VERSION_MAJOR 57
#define LIBAVCODEC_VERSION_MINOR 3
0
#define LIBAVCODEC_VERSION_MINOR 3
1
#define LIBAVCODEC_VERSION_MICRO 100
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment