Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
Commits
f6ee61fb
Commit
f6ee61fb
authored
Jul 05, 2014
by
Anton Khirnov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavc: export DV profile API used by muxer/demuxer as public
parent
3f3232a3
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
121 additions
and
48 deletions
+121
-48
configure
configure
+5
-2
APIchanges
doc/APIchanges
+3
-0
Makefile
libavcodec/Makefile
+4
-4
dv.c
libavcodec/dv.c
+2
-2
dv.h
libavcodec/dv.h
+3
-3
dv_profile.c
libavcodec/dv_profile.c
+41
-16
dv_profile.h
libavcodec/dv_profile.h
+21
-8
dv_profile_internal.h
libavcodec/dv_profile_internal.h
+27
-0
dvdec.c
libavcodec/dvdec.c
+1
-1
dvenc.c
libavcodec/dvenc.c
+1
-0
version.h
libavcodec/version.h
+2
-2
dv.c
libavformat/dv.c
+8
-7
dvenc.c
libavformat/dvenc.c
+3
-3
No files found.
configure
View file @
f6ee61fb
...
@@ -1534,6 +1534,7 @@ CONFIG_EXTRA="
...
@@ -1534,6 +1534,7 @@ CONFIG_EXTRA="
bswapdsp
bswapdsp
cabac
cabac
dsputil
dsputil
dvprofile
fdctdsp
fdctdsp
gcrypt
gcrypt
golomb
golomb
...
@@ -1749,8 +1750,8 @@ cscd_decoder_suggest="zlib"
...
@@ -1749,8 +1750,8 @@ cscd_decoder_suggest="zlib"
dca_decoder_select
=
"mdct"
dca_decoder_select
=
"mdct"
dnxhd_decoder_select
=
"blockdsp idctdsp"
dnxhd_decoder_select
=
"blockdsp idctdsp"
dnxhd_encoder_select
=
"aandcttables blockdsp dsputil fdctdsp idctdsp mpegvideoenc"
dnxhd_encoder_select
=
"aandcttables blockdsp dsputil fdctdsp idctdsp mpegvideoenc"
dvvideo_decoder_select
=
"idctdsp"
dvvideo_decoder_select
=
"
dvprofile
idctdsp"
dvvideo_encoder_select
=
"dsputil fdctdsp"
dvvideo_encoder_select
=
"dsputil
dvprofile
fdctdsp"
dxa_decoder_deps
=
"zlib"
dxa_decoder_deps
=
"zlib"
eac3_decoder_select
=
"ac3_decoder"
eac3_decoder_select
=
"ac3_decoder"
eac3_encoder_select
=
"ac3_encoder"
eac3_encoder_select
=
"ac3_encoder"
...
@@ -2007,6 +2008,8 @@ avisynth_demuxer_deps="avisynth"
...
@@ -2007,6 +2008,8 @@ avisynth_demuxer_deps="avisynth"
avisynth_demuxer_select
=
"riffdec"
avisynth_demuxer_select
=
"riffdec"
caf_demuxer_select
=
"riffdec"
caf_demuxer_select
=
"riffdec"
dirac_demuxer_select
=
"dirac_parser"
dirac_demuxer_select
=
"dirac_parser"
dv_demuxer_select
=
"dvprofile"
dv_muxer_select
=
"dvprofile"
dxa_demuxer_select
=
"riffdec"
dxa_demuxer_select
=
"riffdec"
eac3_demuxer_select
=
"ac3_parser"
eac3_demuxer_select
=
"ac3_parser"
f4v_muxer_select
=
"mov_muxer"
f4v_muxer_select
=
"mov_muxer"
...
...
doc/APIchanges
View file @
f6ee61fb
...
@@ -13,6 +13,9 @@ libavutil: 2013-12-xx
...
@@ -13,6 +13,9 @@ libavutil: 2013-12-xx
API changes, most recent first:
API changes, most recent first:
2014-07-xx - xxxxxxx - lavc 55.56.0 - dv_profile.h
Add a public API for DV profile handling.
2014-06-xx - xxxxxxx - lavu 53.17.0 - imgutils.h
2014-06-xx - xxxxxxx - lavu 53.17.0 - imgutils.h
Add av_image_check_sar().
Add av_image_check_sar().
...
...
libavcodec/Makefile
View file @
f6ee61fb
...
@@ -2,6 +2,7 @@ NAME = avcodec
...
@@ -2,6 +2,7 @@ NAME = avcodec
HEADERS
=
avcodec.h
\
HEADERS
=
avcodec.h
\
avfft.h
\
avfft.h
\
dv_profile.h
\
dxva2.h
\
dxva2.h
\
vaapi.h
\
vaapi.h
\
vda.h
\
vda.h
\
...
@@ -15,6 +16,7 @@ OBJS = allcodecs.o \
...
@@ -15,6 +16,7 @@ OBJS = allcodecs.o \
bitstream.o
\
bitstream.o
\
bitstream_filter.o
\
bitstream_filter.o
\
codec_desc.o
\
codec_desc.o
\
dv_profile.o
\
fmtconvert.o
\
fmtconvert.o
\
imgconvert.o
\
imgconvert.o
\
log2_tab.o
\
log2_tab.o
\
...
@@ -164,8 +166,8 @@ OBJS-$(CONFIG_DVBSUB_DECODER) += dvbsubdec.o
...
@@ -164,8 +166,8 @@ OBJS-$(CONFIG_DVBSUB_DECODER) += dvbsubdec.o
OBJS-$(CONFIG_DVBSUB_ENCODER)
+=
dvbsub.o
OBJS-$(CONFIG_DVBSUB_ENCODER)
+=
dvbsub.o
OBJS-$(CONFIG_DVDSUB_DECODER)
+=
dvdsubdec.o
OBJS-$(CONFIG_DVDSUB_DECODER)
+=
dvdsubdec.o
OBJS-$(CONFIG_DVDSUB_ENCODER)
+=
dvdsubenc.o
OBJS-$(CONFIG_DVDSUB_ENCODER)
+=
dvdsubenc.o
OBJS-$(CONFIG_DVVIDEO_DECODER)
+=
dvdec.o
dv.o
dvdata.o
dv_profile.o
OBJS-$(CONFIG_DVVIDEO_DECODER)
+=
dvdec.o
dv.o
dvdata.o
OBJS-$(CONFIG_DVVIDEO_ENCODER)
+=
dvenc.o
dv.o
dvdata.o
dv_profile.o
OBJS-$(CONFIG_DVVIDEO_ENCODER)
+=
dvenc.o
dv.o
dvdata.o
OBJS-$(CONFIG_DXA_DECODER)
+=
dxa.o
OBJS-$(CONFIG_DXA_DECODER)
+=
dxa.o
OBJS-$(CONFIG_DXTORY_DECODER)
+=
dxtory.o
OBJS-$(CONFIG_DXTORY_DECODER)
+=
dxtory.o
OBJS-$(CONFIG_EAC3_DECODER)
+=
eac3dec.o
eac3_data.o
OBJS-$(CONFIG_EAC3_DECODER)
+=
eac3dec.o
eac3_data.o
...
@@ -557,8 +559,6 @@ OBJS-$(CONFIG_ADTS_MUXER) += mpeg4audio.o
...
@@ -557,8 +559,6 @@ OBJS-$(CONFIG_ADTS_MUXER) += mpeg4audio.o
OBJS-$(CONFIG_ADX_DEMUXER)
+=
adx.o
OBJS-$(CONFIG_ADX_DEMUXER)
+=
adx.o
OBJS-$(CONFIG_CAF_DEMUXER)
+=
mpeg4audio.o
mpegaudiodata.o
\
OBJS-$(CONFIG_CAF_DEMUXER)
+=
mpeg4audio.o
mpegaudiodata.o
\
ac3tab.o
ac3tab.o
OBJS-$(CONFIG_DV_DEMUXER)
+=
dv_profile.o
OBJS-$(CONFIG_DV_MUXER)
+=
dv_profile.o
OBJS-$(CONFIG_FLAC_DEMUXER)
+=
flac.o
flacdata.o
\
OBJS-$(CONFIG_FLAC_DEMUXER)
+=
flac.o
flacdata.o
\
vorbis_parser.o
xiph.o
vorbis_parser.o
xiph.o
OBJS-$(CONFIG_FLAC_MUXER)
+=
flac.o
flacdata.o
OBJS-$(CONFIG_FLAC_MUXER)
+=
flac.o
flacdata.o
...
...
libavcodec/dv.c
View file @
f6ee61fb
...
@@ -51,7 +51,7 @@
...
@@ -51,7 +51,7 @@
/* XXX: also include quantization */
/* XXX: also include quantization */
RL_VLC_ELEM
ff_dv_rl_vlc
[
1184
];
RL_VLC_ELEM
ff_dv_rl_vlc
[
1184
];
static
inline
void
dv_calc_mb_coordinates
(
const
DVp
rofile
*
d
,
int
chan
,
int
seq
,
int
slot
,
static
inline
void
dv_calc_mb_coordinates
(
const
AVDVP
rofile
*
d
,
int
chan
,
int
seq
,
int
slot
,
uint16_t
*
tbl
)
uint16_t
*
tbl
)
{
{
static
const
uint8_t
off
[]
=
{
2
,
6
,
8
,
0
,
4
};
static
const
uint8_t
off
[]
=
{
2
,
6
,
8
,
0
,
4
};
...
@@ -175,7 +175,7 @@ static const uint8_t dv100_qstep[16] = {
...
@@ -175,7 +175,7 @@ static const uint8_t dv100_qstep[16] = {
static
const
uint8_t
dv_quant_areas
[
4
]
=
{
6
,
21
,
43
,
64
};
static
const
uint8_t
dv_quant_areas
[
4
]
=
{
6
,
21
,
43
,
64
};
int
ff_dv_init_dynamic_tables
(
DVVideoContext
*
ctx
,
const
DVp
rofile
*
d
)
int
ff_dv_init_dynamic_tables
(
DVVideoContext
*
ctx
,
const
AVDVP
rofile
*
d
)
{
{
int
j
,
i
,
c
,
s
,
p
;
int
j
,
i
,
c
,
s
,
p
;
uint32_t
*
factor1
,
*
factor2
;
uint32_t
*
factor1
,
*
factor2
;
...
...
libavcodec/dv.h
View file @
f6ee61fb
...
@@ -38,7 +38,7 @@ typedef struct DVwork_chunk {
...
@@ -38,7 +38,7 @@ typedef struct DVwork_chunk {
}
DVwork_chunk
;
}
DVwork_chunk
;
typedef
struct
DVVideoContext
{
typedef
struct
DVVideoContext
{
const
DVp
rofile
*
sys
;
const
AVDVP
rofile
*
sys
;
AVFrame
*
frame
;
AVFrame
*
frame
;
AVCodecContext
*
avctx
;
AVCodecContext
*
avctx
;
uint8_t
*
buf
;
uint8_t
*
buf
;
...
@@ -98,10 +98,10 @@ enum dv_pack_type {
...
@@ -98,10 +98,10 @@ enum dv_pack_type {
extern
RL_VLC_ELEM
ff_dv_rl_vlc
[
1184
];
extern
RL_VLC_ELEM
ff_dv_rl_vlc
[
1184
];
int
ff_dv_init_dynamic_tables
(
DVVideoContext
*
s
,
const
DVp
rofile
*
d
);
int
ff_dv_init_dynamic_tables
(
DVVideoContext
*
s
,
const
AVDVP
rofile
*
d
);
int
ff_dvvideo_init
(
AVCodecContext
*
avctx
);
int
ff_dvvideo_init
(
AVCodecContext
*
avctx
);
static
inline
int
dv_work_pool_size
(
const
DVp
rofile
*
d
)
static
inline
int
dv_work_pool_size
(
const
AVDVP
rofile
*
d
)
{
{
int
size
=
d
->
n_difchan
*
d
->
difseg_size
*
27
;
int
size
=
d
->
n_difchan
*
d
->
difseg_size
*
27
;
if
(
DV_PROFILE_IS_1080i50
(
d
))
if
(
DV_PROFILE_IS_1080i50
(
d
))
...
...
libavcodec/dv_profile.c
View file @
f6ee61fb
...
@@ -18,11 +18,16 @@
...
@@ -18,11 +18,16 @@
#include <stdint.h>
#include <stdint.h>
#include "config.h"
#include "libavutil/common.h"
#include "libavutil/common.h"
#include "libavutil/log.h"
#include "libavutil/log.h"
#include "libavutil/pixdesc.h"
#include "libavutil/pixdesc.h"
#include "avcodec.h"
#include "avcodec.h"
#include "dv_profile.h"
#include "dv_profile.h"
#include "dv_profile_internal.h"
#if CONFIG_DVPROFILE
static
const
uint8_t
dv_audio_shuffle525
[
10
][
9
]
=
{
static
const
uint8_t
dv_audio_shuffle525
[
10
][
9
]
=
{
{
0
,
30
,
60
,
20
,
50
,
80
,
10
,
40
,
70
},
/* 1st channel */
{
0
,
30
,
60
,
20
,
50
,
80
,
10
,
40
,
70
},
/* 1st channel */
...
@@ -63,7 +68,7 @@ static const uint8_t block_sizes_dv100[8] = {
...
@@ -63,7 +68,7 @@ static const uint8_t block_sizes_dv100[8] = {
80
,
80
,
80
,
80
,
80
,
80
,
64
,
64
,
80
,
80
,
80
,
80
,
80
,
80
,
64
,
64
,
};
};
static
const
DVp
rofile
dv_profiles
[]
=
{
static
const
AVDVP
rofile
dv_profiles
[]
=
{
{
.
dsf
=
0
,
{
.
dsf
=
0
,
.
video_stype
=
0x0
,
.
video_stype
=
0x0
,
.
frame_size
=
120000
,
/* IEC 61834, SMPTE-314M - 525/60 (NTSC) */
.
frame_size
=
120000
,
/* IEC 61834, SMPTE-314M - 525/60 (NTSC) */
...
@@ -246,9 +251,23 @@ static const DVprofile dv_profiles[] = {
...
@@ -246,9 +251,23 @@ static const DVprofile dv_profiles[] = {
}
}
};
};
const
DVprofile
*
avpriv_dv_frame_profile
(
const
DVprofile
*
sys
,
void
ff_dv_print_profiles
(
void
*
logctx
,
int
loglevel
)
const
uint8_t
*
frame
,
unsigned
buf_size
)
{
{
int
i
;
for
(
i
=
0
;
i
<
FF_ARRAY_ELEMS
(
dv_profiles
);
i
++
)
{
const
AVDVProfile
*
p
=
&
dv_profiles
[
i
];
av_log
(
logctx
,
loglevel
,
"Frame size: %dx%d; pixel format: %s, "
"framerate: %d/%d
\n
"
,
p
->
width
,
p
->
height
,
av_get_pix_fmt_name
(
p
->
pix_fmt
),
p
->
time_base
.
den
,
p
->
time_base
.
num
);
}
}
#endif
/* CONFIG_DVPROFILE */
const
AVDVProfile
*
av_dv_frame_profile
(
const
AVDVProfile
*
sys
,
const
uint8_t
*
frame
,
unsigned
buf_size
)
{
#if CONFIG_DVPROFILE
int
i
,
dsf
,
stype
;
int
i
,
dsf
,
stype
;
if
(
buf_size
<
80
*
5
+
48
+
4
)
if
(
buf_size
<
80
*
5
+
48
+
4
)
...
@@ -269,30 +288,36 @@ const DVprofile* avpriv_dv_frame_profile(const DVprofile *sys,
...
@@ -269,30 +288,36 @@ const DVprofile* avpriv_dv_frame_profile(const DVprofile *sys,
/* check if old sys matches and assumes corrupted input */
/* check if old sys matches and assumes corrupted input */
if
(
sys
&&
buf_size
==
sys
->
frame_size
)
if
(
sys
&&
buf_size
==
sys
->
frame_size
)
return
sys
;
return
sys
;
#endif
return
NULL
;
return
NULL
;
}
}
const
DVprofile
*
avpriv_dv_codec_profile
(
AVCodecContext
*
codec
)
const
AVDVProfile
*
av_dv_codec_profile
(
int
width
,
int
height
,
enum
AVPixelFormat
pix_fmt
)
{
{
#if CONFIG_DVPROFILE
int
i
;
int
i
;
for
(
i
=
0
;
i
<
FF_ARRAY_ELEMS
(
dv_profiles
);
i
++
)
for
(
i
=
0
;
i
<
FF_ARRAY_ELEMS
(
dv_profiles
);
i
++
)
if
(
codec
->
height
==
dv_profiles
[
i
].
height
&&
if
(
height
==
dv_profiles
[
i
].
height
&&
codec
->
pix_fmt
==
dv_profiles
[
i
].
pix_fmt
&&
pix_fmt
==
dv_profiles
[
i
].
pix_fmt
&&
codec
->
width
==
dv_profiles
[
i
].
width
)
width
==
dv_profiles
[
i
].
width
)
return
&
dv_profiles
[
i
];
return
&
dv_profiles
[
i
];
#endif
return
NULL
;
return
NULL
;
}
}
void
ff_dv_print_profiles
(
void
*
logctx
,
int
loglevel
)
#if LIBAVCODEC_VERSION_MAJOR < 56
const
AVDVProfile
*
avpriv_dv_frame_profile
(
const
AVDVProfile
*
sys
,
const
uint8_t
*
frame
,
unsigned
buf_size
)
{
{
int
i
;
return
av_dv_frame_profile
(
sys
,
frame
,
buf_size
);
for
(
i
=
0
;
i
<
FF_ARRAY_ELEMS
(
dv_profiles
);
i
++
)
{
}
const
DVprofile
*
p
=
&
dv_profiles
[
i
];
av_log
(
logctx
,
loglevel
,
"Frame size: %dx%d; pixel format: %s, "
const
AVDVProfile
*
avpriv_dv_codec_profile
(
AVCodecContext
*
codec
)
"framerate: %d/%d
\n
"
,
p
->
width
,
p
->
height
,
av_get_pix_fmt_name
(
p
->
pix_fmt
),
{
p
->
time_base
.
den
,
p
->
time_base
.
num
);
return
av_dv_codec_profile
(
codec
->
width
,
codec
->
height
,
codec
->
pix_fmt
);
}
}
}
#endif
libavcodec/dv_profile.h
View file @
f6ee61fb
...
@@ -26,12 +26,12 @@
...
@@ -26,12 +26,12 @@
#include "avcodec.h"
#include "avcodec.h"
/*
/*
*
DVp
rofile is used to express the differences between various
*
AVDVP
rofile is used to express the differences between various
* DV flavors. For now it's primarily used for differentiating
* DV flavors. For now it's primarily used for differentiating
* 525/60 and 625/50, but the plans are to use it for various
* 525/60 and 625/50, but the plans are to use it for various
* DV specs as well (e.g. SMPTE314M vs. IEC 61834).
* DV specs as well (e.g. SMPTE314M vs. IEC 61834).
*/
*/
typedef
struct
DVp
rofile
{
typedef
struct
AVDVP
rofile
{
int
dsf
;
/* value of the dsf in the DV header */
int
dsf
;
/* value of the dsf in the DV header */
int
video_stype
;
/* stype for VAUX source pack */
int
video_stype
;
/* stype for VAUX source pack */
int
frame_size
;
/* total size of one frame in bytes */
int
frame_size
;
/* total size of one frame in bytes */
...
@@ -51,15 +51,28 @@ typedef struct DVprofile {
...
@@ -51,15 +51,28 @@ typedef struct DVprofile {
int
audio_samples_dist
[
5
];
/* how many samples are supposed to be */
int
audio_samples_dist
[
5
];
/* how many samples are supposed to be */
/* in each frame in a 5 frames window */
/* in each frame in a 5 frames window */
const
uint8_t
(
*
audio_shuffle
)[
9
];
/* PCM shuffling table */
const
uint8_t
(
*
audio_shuffle
)[
9
];
/* PCM shuffling table */
}
DVp
rofile
;
}
AVDVP
rofile
;
const
DVprofile
*
avpriv_dv_frame_profile
(
const
DVprofile
*
sys
,
#if LIBAVCODEC_VERSION_MAJOR < 56
const
uint8_t
*
frame
,
unsigned
buf_size
);
const
AVDVProfile
*
avpriv_dv_frame_profile
(
const
AVDVProfile
*
sys
,
const
DVprofile
*
avpriv_dv_codec_profile
(
AVCodecContext
*
codec
);
const
uint8_t
*
frame
,
unsigned
buf_size
);
const
AVDVProfile
*
avpriv_dv_codec_profile
(
AVCodecContext
*
codec
);
#endif
/**
/**
* Print all allowed DV profiles into logctx at specified logging level.
* Get a DV profile for the provided compressed frame.
*
* @param sys the profile used for the previous frame, may be NULL
* @param frame the compressed data buffer
* @param buf_size size of the buffer in bytes
* @return the DV profile for the supplied data or NULL on failure
*/
const
AVDVProfile
*
av_dv_frame_profile
(
const
AVDVProfile
*
sys
,
const
uint8_t
*
frame
,
unsigned
buf_size
);
/**
* Get a DV profile for the provided stream parameters.
*/
*/
void
ff_dv_print_profiles
(
void
*
logctx
,
int
loglevel
);
const
AVDVProfile
*
av_dv_codec_profile
(
int
width
,
int
height
,
enum
AVPixelFormat
pix_fmt
);
#endif
/* AVCODEC_DV_PROFILE_H */
#endif
/* AVCODEC_DV_PROFILE_H */
libavcodec/dv_profile_internal.h
0 → 100644
View file @
f6ee61fb
/*
* 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
*/
#ifndef AVCODEC_DV_PROFILE_INTERNAL_H
#define AVCODEC_DV_PROFILE_INTERNAL_H
/**
* Print all allowed DV profiles into logctx at specified logging level.
*/
void
ff_dv_print_profiles
(
void
*
logctx
,
int
loglevel
);
#endif
/* AVCODEC_DV_PROFILE_INTERNAL_H */
libavcodec/dvdec.c
View file @
f6ee61fb
...
@@ -341,7 +341,7 @@ static int dvvideo_decode_frame(AVCodecContext *avctx,
...
@@ -341,7 +341,7 @@ static int dvvideo_decode_frame(AVCodecContext *avctx,
DVVideoContext
*
s
=
avctx
->
priv_data
;
DVVideoContext
*
s
=
avctx
->
priv_data
;
const
uint8_t
*
vsc_pack
;
const
uint8_t
*
vsc_pack
;
int
apt
,
is16_9
,
ret
;
int
apt
,
is16_9
,
ret
;
const
DVp
rofile
*
sys
;
const
AVDVP
rofile
*
sys
;
sys
=
avpriv_dv_frame_profile
(
s
->
sys
,
buf
,
buf_size
);
sys
=
avpriv_dv_frame_profile
(
s
->
sys
,
buf
,
buf_size
);
if
(
!
sys
||
buf_size
<
sys
->
frame_size
)
{
if
(
!
sys
||
buf_size
<
sys
->
frame_size
)
{
...
...
libavcodec/dvenc.c
View file @
f6ee61fb
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
#include "put_bits.h"
#include "put_bits.h"
#include "dv.h"
#include "dv.h"
#include "dv_tablegen.h"
#include "dv_tablegen.h"
#include "dv_profile_internal.h"
static
av_cold
int
dvvideo_encode_init
(
AVCodecContext
*
avctx
)
static
av_cold
int
dvvideo_encode_init
(
AVCodecContext
*
avctx
)
{
{
...
...
libavcodec/version.h
View file @
f6ee61fb
...
@@ -29,8 +29,8 @@
...
@@ -29,8 +29,8 @@
#include "libavutil/version.h"
#include "libavutil/version.h"
#define LIBAVCODEC_VERSION_MAJOR 55
#define LIBAVCODEC_VERSION_MAJOR 55
#define LIBAVCODEC_VERSION_MINOR 5
5
#define LIBAVCODEC_VERSION_MINOR 5
6
#define LIBAVCODEC_VERSION_MICRO
2
#define LIBAVCODEC_VERSION_MICRO
0
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \
LIBAVCODEC_VERSION_MINOR, \
...
...
libavformat/dv.c
View file @
f6ee61fb
...
@@ -39,7 +39,7 @@
...
@@ -39,7 +39,7 @@
#include "dv.h"
#include "dv.h"
struct
DVDemuxContext
{
struct
DVDemuxContext
{
const
DVp
rofile
*
sys
;
/* Current DV profile. E.g.: 525/60, 625/50 */
const
AVDVP
rofile
*
sys
;
/* Current DV profile. E.g.: 525/60, 625/50 */
AVFormatContext
*
fctx
;
AVFormatContext
*
fctx
;
AVStream
*
vst
;
AVStream
*
vst
;
AVStream
*
ast
[
4
];
AVStream
*
ast
[
4
];
...
@@ -109,7 +109,7 @@ static const int dv_audio_frequency[3] = {
...
@@ -109,7 +109,7 @@ static const int dv_audio_frequency[3] = {
* are converted into 16bit linear ones.
* are converted into 16bit linear ones.
*/
*/
static
int
dv_extract_audio
(
uint8_t
*
frame
,
uint8_t
**
ppcm
,
static
int
dv_extract_audio
(
uint8_t
*
frame
,
uint8_t
**
ppcm
,
const
DVp
rofile
*
sys
)
const
AVDVP
rofile
*
sys
)
{
{
int
size
,
chan
,
i
,
j
,
d
,
of
,
smpls
,
freq
,
quant
,
half_ch
;
int
size
,
chan
,
i
,
j
,
d
,
of
,
smpls
,
freq
,
quant
,
half_ch
;
uint16_t
lc
,
rc
;
uint16_t
lc
,
rc
;
...
@@ -347,7 +347,7 @@ int avpriv_dv_produce_packet(DVDemuxContext *c, AVPacket *pkt,
...
@@ -347,7 +347,7 @@ int avpriv_dv_produce_packet(DVDemuxContext *c, AVPacket *pkt,
uint8_t
*
ppcm
[
5
]
=
{
0
};
uint8_t
*
ppcm
[
5
]
=
{
0
};
if
(
buf_size
<
DV_PROFILE_BYTES
||
if
(
buf_size
<
DV_PROFILE_BYTES
||
!
(
c
->
sys
=
av
priv
_dv_frame_profile
(
c
->
sys
,
buf
,
buf_size
))
||
!
(
c
->
sys
=
av_dv_frame_profile
(
c
->
sys
,
buf
,
buf_size
))
||
buf_size
<
c
->
sys
->
frame_size
)
{
buf_size
<
c
->
sys
->
frame_size
)
{
return
-
1
;
/* Broken frame, or not enough data */
return
-
1
;
/* Broken frame, or not enough data */
}
}
...
@@ -395,7 +395,8 @@ static int64_t dv_frame_offset(AVFormatContext *s, DVDemuxContext *c,
...
@@ -395,7 +395,8 @@ static int64_t dv_frame_offset(AVFormatContext *s, DVDemuxContext *c,
int64_t
timestamp
,
int
flags
)
int64_t
timestamp
,
int
flags
)
{
{
// FIXME: sys may be wrong if last dv_read_packet() failed (buffer is junk)
// FIXME: sys may be wrong if last dv_read_packet() failed (buffer is junk)
const
DVprofile
*
sys
=
avpriv_dv_codec_profile
(
c
->
vst
->
codec
);
const
AVDVProfile
*
sys
=
av_dv_codec_profile
(
c
->
vst
->
codec
->
width
,
c
->
vst
->
codec
->
height
,
c
->
vst
->
codec
->
pix_fmt
);
int64_t
offset
;
int64_t
offset
;
int64_t
size
=
avio_size
(
s
->
pb
)
-
s
->
data_offset
;
int64_t
size
=
avio_size
(
s
->
pb
)
-
s
->
data_offset
;
int64_t
max_offset
=
((
size
-
1
)
/
sys
->
frame_size
)
*
sys
->
frame_size
;
int64_t
max_offset
=
((
size
-
1
)
/
sys
->
frame_size
)
*
sys
->
frame_size
;
...
@@ -460,9 +461,9 @@ static int dv_read_header(AVFormatContext *s)
...
@@ -460,9 +461,9 @@ static int dv_read_header(AVFormatContext *s)
avio_seek
(
s
->
pb
,
-
DV_PROFILE_BYTES
,
SEEK_CUR
)
<
0
)
avio_seek
(
s
->
pb
,
-
DV_PROFILE_BYTES
,
SEEK_CUR
)
<
0
)
return
AVERROR
(
EIO
);
return
AVERROR
(
EIO
);
c
->
dv_demux
->
sys
=
av
priv
_dv_frame_profile
(
c
->
dv_demux
->
sys
,
c
->
dv_demux
->
sys
=
av_dv_frame_profile
(
c
->
dv_demux
->
sys
,
c
->
buf
,
c
->
buf
,
DV_PROFILE_BYTES
);
DV_PROFILE_BYTES
);
if
(
!
c
->
dv_demux
->
sys
)
{
if
(
!
c
->
dv_demux
->
sys
)
{
av_log
(
s
,
AV_LOG_ERROR
,
av_log
(
s
,
AV_LOG_ERROR
,
"Can't determine profile of DV input stream.
\n
"
);
"Can't determine profile of DV input stream.
\n
"
);
...
...
libavformat/dvenc.c
View file @
f6ee61fb
...
@@ -41,7 +41,7 @@
...
@@ -41,7 +41,7 @@
#define MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio
#define MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio
struct
DVMuxContext
{
struct
DVMuxContext
{
const
DVp
rofile
*
sys
;
/* current DV profile, e.g.: 525/60, 625/50 */
const
AVDVP
rofile
*
sys
;
/* current DV profile, e.g.: 525/60, 625/50 */
int
n_ast
;
/* number of stereo audio streams (up to 2) */
int
n_ast
;
/* number of stereo audio streams (up to 2) */
AVStream
*
ast
[
2
];
/* stereo audio streams */
AVStream
*
ast
[
2
];
/* stereo audio streams */
AVFifoBuffer
*
audio_data
[
2
];
/* FIFO for storing excessive amounts of PCM */
AVFifoBuffer
*
audio_data
[
2
];
/* FIFO for storing excessive amounts of PCM */
...
@@ -67,7 +67,7 @@ static const int dv_aaux_packs_dist[12][9] = {
...
@@ -67,7 +67,7 @@ static const int dv_aaux_packs_dist[12][9] = {
{
0x50
,
0x51
,
0x52
,
0x53
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},
{
0x50
,
0x51
,
0x52
,
0x53
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},
};
};
static
int
dv_audio_frame_size
(
const
DVp
rofile
*
sys
,
int
frame
)
static
int
dv_audio_frame_size
(
const
AVDVP
rofile
*
sys
,
int
frame
)
{
{
return
sys
->
audio_samples_dist
[
frame
%
(
sizeof
(
sys
->
audio_samples_dist
)
/
return
sys
->
audio_samples_dist
[
frame
%
(
sizeof
(
sys
->
audio_samples_dist
)
/
sizeof
(
sys
->
audio_samples_dist
[
0
]))];
sizeof
(
sys
->
audio_samples_dist
[
0
]))];
...
@@ -328,7 +328,7 @@ static DVMuxContext* dv_init_mux(AVFormatContext* s)
...
@@ -328,7 +328,7 @@ static DVMuxContext* dv_init_mux(AVFormatContext* s)
c
->
ast
[
i
]
->
codec
->
channels
!=
2
))
c
->
ast
[
i
]
->
codec
->
channels
!=
2
))
goto
bail_out
;
goto
bail_out
;
}
}
c
->
sys
=
av
priv_dv_codec_profile
(
vst
->
codec
);
c
->
sys
=
av
_dv_codec_profile
(
vst
->
codec
->
width
,
vst
->
codec
->
height
,
vst
->
codec
->
pix_fmt
);
if
(
!
c
->
sys
)
if
(
!
c
->
sys
)
goto
bail_out
;
goto
bail_out
;
...
...
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