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
d6902070
Commit
d6902070
authored
Jul 06, 2014
by
Nidhi Makhijani
Committed by
Diego Biurrun
Jul 06, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dsicin: Split audio and video decoder
Signed-off-by:
Diego Biurrun
<
diego@biurrun.de
>
parent
2fc85fe9
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
139 additions
and
111 deletions
+139
-111
Makefile
libavcodec/Makefile
+2
-2
dsicinaudio.c
libavcodec/dsicinaudio.c
+135
-0
dsicinvideo.c
libavcodec/dsicinvideo.c
+2
-109
No files found.
libavcodec/Makefile
View file @
d6902070
...
...
@@ -156,8 +156,8 @@ OBJS-$(CONFIG_DNXHD_DECODER) += dnxhddec.o dnxhddata.o
OBJS-$(CONFIG_DNXHD_ENCODER)
+=
dnxhdenc.o
dnxhddata.o
OBJS-$(CONFIG_DPX_DECODER)
+=
dpx.o
OBJS-$(CONFIG_DPX_ENCODER)
+=
dpxenc.o
OBJS-$(CONFIG_DSICINAUDIO_DECODER)
+=
dsicina
v
.o
OBJS-$(CONFIG_DSICINVIDEO_DECODER)
+=
dsicin
av
.o
OBJS-$(CONFIG_DSICINAUDIO_DECODER)
+=
dsicina
udio
.o
OBJS-$(CONFIG_DSICINVIDEO_DECODER)
+=
dsicin
video
.o
OBJS-$(CONFIG_DVBSUB_DECODER)
+=
dvbsubdec.o
OBJS-$(CONFIG_DVBSUB_ENCODER)
+=
dvbsub.o
OBJS-$(CONFIG_DVDSUB_DECODER)
+=
dvdsubdec.o
...
...
libavcodec/dsicinaudio.c
0 → 100644
View file @
d6902070
/*
* Delphine Software International CIN audio decoder
* Copyright (c) 2006 Gregory Montoir (cyx@users.sourceforge.net)
*
* This file is part of Libav.
*
* Libav 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.
*
* Libav 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 Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* @file
* Delphine Software International CIN audio decoder
*/
#include "libavutil/channel_layout.h"
#include "avcodec.h"
#include "bytestream.h"
#include "internal.h"
#include "mathops.h"
typedef
struct
CinAudioContext
{
int
initial_decode_frame
;
int
delta
;
}
CinAudioContext
;
/* table defining a geometric sequence with multiplier = 32767 ^ (1 / 128) */
static
const
int16_t
cinaudio_delta16_table
[
256
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
-
30210
,
-
27853
,
-
25680
,
-
23677
,
-
21829
,
-
20126
,
-
18556
,
-
17108
,
-
15774
,
-
14543
,
-
13408
,
-
12362
,
-
11398
,
-
10508
,
-
9689
,
-
8933
,
-
8236
,
-
7593
,
-
7001
,
-
6455
,
-
5951
,
-
5487
,
-
5059
,
-
4664
,
-
4300
,
-
3964
,
-
3655
,
-
3370
,
-
3107
,
-
2865
,
-
2641
,
-
2435
,
-
2245
,
-
2070
,
-
1908
,
-
1759
,
-
1622
,
-
1495
,
-
1379
,
-
1271
,
-
1172
,
-
1080
,
-
996
,
-
918
,
-
847
,
-
781
,
-
720
,
-
663
,
-
612
,
-
564
,
-
520
,
-
479
,
-
442
,
-
407
,
-
376
,
-
346
,
-
319
,
-
294
,
-
271
,
-
250
,
-
230
,
-
212
,
-
196
,
-
181
,
-
166
,
-
153
,
-
141
,
-
130
,
-
120
,
-
111
,
-
102
,
-
94
,
-
87
,
-
80
,
-
74
,
-
68
,
-
62
,
-
58
,
-
53
,
-
49
,
-
45
,
-
41
,
-
38
,
-
35
,
-
32
,
-
30
,
-
27
,
-
25
,
-
23
,
-
21
,
-
20
,
-
18
,
-
17
,
-
15
,
-
14
,
-
13
,
-
12
,
-
11
,
-
10
,
-
9
,
-
8
,
-
7
,
-
6
,
-
5
,
-
4
,
-
3
,
-
2
,
-
1
,
0
,
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
17
,
18
,
20
,
21
,
23
,
25
,
27
,
30
,
32
,
35
,
38
,
41
,
45
,
49
,
53
,
58
,
62
,
68
,
74
,
80
,
87
,
94
,
102
,
111
,
120
,
130
,
141
,
153
,
166
,
181
,
196
,
212
,
230
,
250
,
271
,
294
,
319
,
346
,
376
,
407
,
442
,
479
,
520
,
564
,
612
,
663
,
720
,
781
,
847
,
918
,
996
,
1080
,
1172
,
1271
,
1379
,
1495
,
1622
,
1759
,
1908
,
2070
,
2245
,
2435
,
2641
,
2865
,
3107
,
3370
,
3655
,
3964
,
4300
,
4664
,
5059
,
5487
,
5951
,
6455
,
7001
,
7593
,
8236
,
8933
,
9689
,
10508
,
11398
,
12362
,
13408
,
14543
,
15774
,
17108
,
18556
,
20126
,
21829
,
23677
,
25680
,
27853
,
30210
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
static
av_cold
int
cinaudio_decode_init
(
AVCodecContext
*
avctx
)
{
CinAudioContext
*
cin
=
avctx
->
priv_data
;
cin
->
initial_decode_frame
=
1
;
cin
->
delta
=
0
;
avctx
->
sample_fmt
=
AV_SAMPLE_FMT_S16
;
avctx
->
channels
=
1
;
avctx
->
channel_layout
=
AV_CH_LAYOUT_MONO
;
return
0
;
}
static
int
cinaudio_decode_frame
(
AVCodecContext
*
avctx
,
void
*
data
,
int
*
got_frame_ptr
,
AVPacket
*
avpkt
)
{
AVFrame
*
frame
=
data
;
const
uint8_t
*
buf
=
avpkt
->
data
;
CinAudioContext
*
cin
=
avctx
->
priv_data
;
const
uint8_t
*
buf_end
=
buf
+
avpkt
->
size
;
int16_t
*
samples
;
int
delta
,
ret
;
/* get output buffer */
frame
->
nb_samples
=
avpkt
->
size
-
cin
->
initial_decode_frame
;
if
((
ret
=
ff_get_buffer
(
avctx
,
frame
,
0
))
<
0
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"get_buffer() failed
\n
"
);
return
ret
;
}
samples
=
(
int16_t
*
)
frame
->
data
[
0
];
delta
=
cin
->
delta
;
if
(
cin
->
initial_decode_frame
)
{
cin
->
initial_decode_frame
=
0
;
delta
=
sign_extend
(
AV_RL16
(
buf
),
16
);
buf
+=
2
;
*
samples
++
=
delta
;
}
while
(
buf
<
buf_end
)
{
delta
+=
cinaudio_delta16_table
[
*
buf
++
];
delta
=
av_clip_int16
(
delta
);
*
samples
++
=
delta
;
}
cin
->
delta
=
delta
;
*
got_frame_ptr
=
1
;
return
avpkt
->
size
;
}
AVCodec
ff_dsicinaudio_decoder
=
{
.
name
=
"dsicinaudio"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"Delphine Software International CIN audio"
),
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
id
=
AV_CODEC_ID_DSICINAUDIO
,
.
priv_data_size
=
sizeof
(
CinAudioContext
),
.
init
=
cinaudio_decode_init
,
.
decode
=
cinaudio_decode_frame
,
.
capabilities
=
CODEC_CAP_DR1
,
};
libavcodec/dsicin
av
.c
→
libavcodec/dsicin
video
.c
View file @
d6902070
/*
* Delphine Software International CIN
Audio/Video Decoders
* Delphine Software International CIN
video decoder
* Copyright (c) 2006 Gregory Montoir (cyx@users.sourceforge.net)
*
* This file is part of Libav.
...
...
@@ -21,15 +21,12 @@
/**
* @file
* Delphine Software International CIN
audio/video decoders
* Delphine Software International CIN
video decoder
*/
#include "libavutil/channel_layout.h"
#include "avcodec.h"
#include "bytestream.h"
#include "internal.h"
#include "mathops.h"
typedef
enum
CinVideoBitmapIndex
{
CIN_CUR_BMP
=
0
,
/* current */
...
...
@@ -45,49 +42,6 @@ typedef struct CinVideoContext {
uint8_t
*
bitmap_table
[
3
];
}
CinVideoContext
;
typedef
struct
CinAudioContext
{
int
initial_decode_frame
;
int
delta
;
}
CinAudioContext
;
/* table defining a geometric sequence with multiplier = 32767 ^ (1 / 128) */
static
const
int16_t
cinaudio_delta16_table
[
256
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
-
30210
,
-
27853
,
-
25680
,
-
23677
,
-
21829
,
-
20126
,
-
18556
,
-
17108
,
-
15774
,
-
14543
,
-
13408
,
-
12362
,
-
11398
,
-
10508
,
-
9689
,
-
8933
,
-
8236
,
-
7593
,
-
7001
,
-
6455
,
-
5951
,
-
5487
,
-
5059
,
-
4664
,
-
4300
,
-
3964
,
-
3655
,
-
3370
,
-
3107
,
-
2865
,
-
2641
,
-
2435
,
-
2245
,
-
2070
,
-
1908
,
-
1759
,
-
1622
,
-
1495
,
-
1379
,
-
1271
,
-
1172
,
-
1080
,
-
996
,
-
918
,
-
847
,
-
781
,
-
720
,
-
663
,
-
612
,
-
564
,
-
520
,
-
479
,
-
442
,
-
407
,
-
376
,
-
346
,
-
319
,
-
294
,
-
271
,
-
250
,
-
230
,
-
212
,
-
196
,
-
181
,
-
166
,
-
153
,
-
141
,
-
130
,
-
120
,
-
111
,
-
102
,
-
94
,
-
87
,
-
80
,
-
74
,
-
68
,
-
62
,
-
58
,
-
53
,
-
49
,
-
45
,
-
41
,
-
38
,
-
35
,
-
32
,
-
30
,
-
27
,
-
25
,
-
23
,
-
21
,
-
20
,
-
18
,
-
17
,
-
15
,
-
14
,
-
13
,
-
12
,
-
11
,
-
10
,
-
9
,
-
8
,
-
7
,
-
6
,
-
5
,
-
4
,
-
3
,
-
2
,
-
1
,
0
,
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
17
,
18
,
20
,
21
,
23
,
25
,
27
,
30
,
32
,
35
,
38
,
41
,
45
,
49
,
53
,
58
,
62
,
68
,
74
,
80
,
87
,
94
,
102
,
111
,
120
,
130
,
141
,
153
,
166
,
181
,
196
,
212
,
230
,
250
,
271
,
294
,
319
,
346
,
376
,
407
,
442
,
479
,
520
,
564
,
612
,
663
,
720
,
781
,
847
,
918
,
996
,
1080
,
1172
,
1271
,
1379
,
1495
,
1622
,
1759
,
1908
,
2070
,
2245
,
2435
,
2641
,
2865
,
3107
,
3370
,
3655
,
3964
,
4300
,
4664
,
5059
,
5487
,
5951
,
6455
,
7001
,
7593
,
8236
,
8933
,
9689
,
10508
,
11398
,
12362
,
13408
,
14543
,
15774
,
17108
,
18556
,
20126
,
21829
,
23677
,
25680
,
27853
,
30210
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
static
av_cold
int
cinvideo_decode_init
(
AVCodecContext
*
avctx
)
{
CinVideoContext
*
cin
=
avctx
->
priv_data
;
...
...
@@ -334,56 +288,6 @@ static av_cold int cinvideo_decode_end(AVCodecContext *avctx)
return
0
;
}
static
av_cold
int
cinaudio_decode_init
(
AVCodecContext
*
avctx
)
{
CinAudioContext
*
cin
=
avctx
->
priv_data
;
cin
->
initial_decode_frame
=
1
;
cin
->
delta
=
0
;
avctx
->
sample_fmt
=
AV_SAMPLE_FMT_S16
;
avctx
->
channels
=
1
;
avctx
->
channel_layout
=
AV_CH_LAYOUT_MONO
;
return
0
;
}
static
int
cinaudio_decode_frame
(
AVCodecContext
*
avctx
,
void
*
data
,
int
*
got_frame_ptr
,
AVPacket
*
avpkt
)
{
AVFrame
*
frame
=
data
;
const
uint8_t
*
buf
=
avpkt
->
data
;
CinAudioContext
*
cin
=
avctx
->
priv_data
;
const
uint8_t
*
buf_end
=
buf
+
avpkt
->
size
;
int16_t
*
samples
;
int
delta
,
ret
;
/* get output buffer */
frame
->
nb_samples
=
avpkt
->
size
-
cin
->
initial_decode_frame
;
if
((
ret
=
ff_get_buffer
(
avctx
,
frame
,
0
))
<
0
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"get_buffer() failed
\n
"
);
return
ret
;
}
samples
=
(
int16_t
*
)
frame
->
data
[
0
];
delta
=
cin
->
delta
;
if
(
cin
->
initial_decode_frame
)
{
cin
->
initial_decode_frame
=
0
;
delta
=
sign_extend
(
AV_RL16
(
buf
),
16
);
buf
+=
2
;
*
samples
++
=
delta
;
}
while
(
buf
<
buf_end
)
{
delta
+=
cinaudio_delta16_table
[
*
buf
++
];
delta
=
av_clip_int16
(
delta
);
*
samples
++
=
delta
;
}
cin
->
delta
=
delta
;
*
got_frame_ptr
=
1
;
return
avpkt
->
size
;
}
AVCodec
ff_dsicinvideo_decoder
=
{
.
name
=
"dsicinvideo"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"Delphine Software International CIN video"
),
...
...
@@ -395,14 +299,3 @@ AVCodec ff_dsicinvideo_decoder = {
.
decode
=
cinvideo_decode_frame
,
.
capabilities
=
CODEC_CAP_DR1
,
};
AVCodec
ff_dsicinaudio_decoder
=
{
.
name
=
"dsicinaudio"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"Delphine Software International CIN audio"
),
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
id
=
AV_CODEC_ID_DSICINAUDIO
,
.
priv_data_size
=
sizeof
(
CinAudioContext
),
.
init
=
cinaudio_decode_init
,
.
decode
=
cinaudio_decode_frame
,
.
capabilities
=
CODEC_CAP_DR1
,
};
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