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
2fc85fe9
Commit
2fc85fe9
authored
Jul 06, 2014
by
Nidhi Makhijani
Committed by
Diego Biurrun
Jul 06, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bmv: Split audio and video decoder
Signed-off-by:
Diego Biurrun
<
diego@biurrun.de
>
parent
b0633f83
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
96 additions
and
69 deletions
+96
-69
Makefile
libavcodec/Makefile
+2
-2
bmvaudio.c
libavcodec/bmvaudio.c
+91
-0
bmvvideo.c
libavcodec/bmvvideo.c
+3
-67
No files found.
libavcodec/Makefile
View file @
2fc85fe9
...
...
@@ -132,8 +132,8 @@ OBJS-$(CONFIG_BINKAUDIO_DCT_DECODER) += binkaudio.o wma.o wma_common.o
OBJS-$(CONFIG_BINKAUDIO_RDFT_DECODER)
+=
binkaudio.o
wma.o
wma_common.o
OBJS-$(CONFIG_BMP_DECODER)
+=
bmp.o
msrledec.o
OBJS-$(CONFIG_BMP_ENCODER)
+=
bmpenc.o
OBJS-$(CONFIG_BMV_
VIDEO_DECODER)
+=
bmv
.o
OBJS-$(CONFIG_BMV_
AUDIO_DECODER)
+=
bmv
.o
OBJS-$(CONFIG_BMV_
AUDIO_DECODER)
+=
bmvaudio
.o
OBJS-$(CONFIG_BMV_
VIDEO_DECODER)
+=
bmvvideo
.o
OBJS-$(CONFIG_BRENDER_PIX_DECODER)
+=
brenderpix.o
OBJS-$(CONFIG_C93_DECODER)
+=
c93.o
OBJS-$(CONFIG_CAVS_DECODER)
+=
cavs.o
cavsdec.o
cavsdsp.o
\
...
...
libavcodec/bmvaudio.c
0 → 100644
View file @
2fc85fe9
/*
* Discworld II BMV audio decoder
* Copyright (c) 2011 Konstantin Shishkov
*
* 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
*/
#include "libavutil/channel_layout.h"
#include "libavutil/common.h"
#include "avcodec.h"
#include "internal.h"
static
const
int
bmv_aud_mults
[
16
]
=
{
16512
,
8256
,
4128
,
2064
,
1032
,
516
,
258
,
192
,
129
,
88
,
64
,
56
,
48
,
40
,
36
,
32
};
static
av_cold
int
bmv_aud_decode_init
(
AVCodecContext
*
avctx
)
{
avctx
->
channels
=
2
;
avctx
->
channel_layout
=
AV_CH_LAYOUT_STEREO
;
avctx
->
sample_fmt
=
AV_SAMPLE_FMT_S16
;
return
0
;
}
static
int
bmv_aud_decode_frame
(
AVCodecContext
*
avctx
,
void
*
data
,
int
*
got_frame_ptr
,
AVPacket
*
avpkt
)
{
AVFrame
*
frame
=
data
;
const
uint8_t
*
buf
=
avpkt
->
data
;
int
buf_size
=
avpkt
->
size
;
int
blocks
=
0
,
total_blocks
,
i
;
int
ret
;
int16_t
*
output_samples
;
int
scale
[
2
];
total_blocks
=
*
buf
++
;
if
(
buf_size
<
total_blocks
*
65
+
1
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"expected %d bytes, got %d
\n
"
,
total_blocks
*
65
+
1
,
buf_size
);
return
AVERROR_INVALIDDATA
;
}
/* get output buffer */
frame
->
nb_samples
=
total_blocks
*
32
;
if
((
ret
=
ff_get_buffer
(
avctx
,
frame
,
0
))
<
0
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"get_buffer() failed
\n
"
);
return
ret
;
}
output_samples
=
(
int16_t
*
)
frame
->
data
[
0
];
for
(
blocks
=
0
;
blocks
<
total_blocks
;
blocks
++
)
{
uint8_t
code
=
*
buf
++
;
code
=
(
code
>>
1
)
|
(
code
<<
7
);
scale
[
0
]
=
bmv_aud_mults
[
code
&
0xF
];
scale
[
1
]
=
bmv_aud_mults
[
code
>>
4
];
for
(
i
=
0
;
i
<
32
;
i
++
)
{
*
output_samples
++
=
av_clip_int16
((
scale
[
0
]
*
(
int8_t
)
*
buf
++
)
>>
5
);
*
output_samples
++
=
av_clip_int16
((
scale
[
1
]
*
(
int8_t
)
*
buf
++
)
>>
5
);
}
}
*
got_frame_ptr
=
1
;
return
buf_size
;
}
AVCodec
ff_bmv_audio_decoder
=
{
.
name
=
"bmv_audio"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"Discworld II BMV audio"
),
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
id
=
AV_CODEC_ID_BMV_AUDIO
,
.
init
=
bmv_aud_decode_init
,
.
decode
=
bmv_aud_decode_frame
,
.
capabilities
=
CODEC_CAP_DR1
,
};
libavcodec/bmv.c
→
libavcodec/bmv
video
.c
View file @
2fc85fe9
/*
* Discworld II BMV video
and audio
decoder
* Discworld II BMV video decoder
* Copyright (c) 2011 Konstantin Shishkov
*
* This file is part of Libav.
...
...
@@ -19,7 +19,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "libavutil/channel_layout.h"
#include "libavutil/common.h"
#include "avcodec.h"
#include "bytestream.h"
#include "internal.h"
...
...
@@ -280,61 +281,6 @@ static av_cold int decode_init(AVCodecContext *avctx)
return
0
;
}
static
const
int
bmv_aud_mults
[
16
]
=
{
16512
,
8256
,
4128
,
2064
,
1032
,
516
,
258
,
192
,
129
,
88
,
64
,
56
,
48
,
40
,
36
,
32
};
static
av_cold
int
bmv_aud_decode_init
(
AVCodecContext
*
avctx
)
{
avctx
->
channels
=
2
;
avctx
->
channel_layout
=
AV_CH_LAYOUT_STEREO
;
avctx
->
sample_fmt
=
AV_SAMPLE_FMT_S16
;
return
0
;
}
static
int
bmv_aud_decode_frame
(
AVCodecContext
*
avctx
,
void
*
data
,
int
*
got_frame_ptr
,
AVPacket
*
avpkt
)
{
AVFrame
*
frame
=
data
;
const
uint8_t
*
buf
=
avpkt
->
data
;
int
buf_size
=
avpkt
->
size
;
int
blocks
=
0
,
total_blocks
,
i
;
int
ret
;
int16_t
*
output_samples
;
int
scale
[
2
];
total_blocks
=
*
buf
++
;
if
(
buf_size
<
total_blocks
*
65
+
1
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"expected %d bytes, got %d
\n
"
,
total_blocks
*
65
+
1
,
buf_size
);
return
AVERROR_INVALIDDATA
;
}
/* get output buffer */
frame
->
nb_samples
=
total_blocks
*
32
;
if
((
ret
=
ff_get_buffer
(
avctx
,
frame
,
0
))
<
0
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"get_buffer() failed
\n
"
);
return
ret
;
}
output_samples
=
(
int16_t
*
)
frame
->
data
[
0
];
for
(
blocks
=
0
;
blocks
<
total_blocks
;
blocks
++
)
{
uint8_t
code
=
*
buf
++
;
code
=
(
code
>>
1
)
|
(
code
<<
7
);
scale
[
0
]
=
bmv_aud_mults
[
code
&
0xF
];
scale
[
1
]
=
bmv_aud_mults
[
code
>>
4
];
for
(
i
=
0
;
i
<
32
;
i
++
)
{
*
output_samples
++
=
av_clip_int16
((
scale
[
0
]
*
(
int8_t
)
*
buf
++
)
>>
5
);
*
output_samples
++
=
av_clip_int16
((
scale
[
1
]
*
(
int8_t
)
*
buf
++
)
>>
5
);
}
}
*
got_frame_ptr
=
1
;
return
buf_size
;
}
AVCodec
ff_bmv_video_decoder
=
{
.
name
=
"bmv_video"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"Discworld II BMV video"
),
...
...
@@ -345,13 +291,3 @@ AVCodec ff_bmv_video_decoder = {
.
decode
=
decode_frame
,
.
capabilities
=
CODEC_CAP_DR1
,
};
AVCodec
ff_bmv_audio_decoder
=
{
.
name
=
"bmv_audio"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"Discworld II BMV audio"
),
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
id
=
AV_CODEC_ID_BMV_AUDIO
,
.
init
=
bmv_aud_decode_init
,
.
decode
=
bmv_aud_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