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
50ba57e0
Commit
50ba57e0
authored
Oct 06, 2012
by
Anton Khirnov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavc: do not use av_pix_fmt_descriptors directly.
parent
9953ff3c
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
61 additions
and
46 deletions
+61
-46
imgconvert.c
libavcodec/imgconvert.c
+18
-12
libopenjpegdec.c
libavcodec/libopenjpegdec.c
+18
-16
libopenjpegenc.c
libavcodec/libopenjpegenc.c
+6
-7
mpegvideo.c
libavcodec/mpegvideo.c
+6
-4
rawdec.c
libavcodec/rawdec.c
+2
-1
rawenc.c
libavcodec/rawenc.c
+3
-1
tiffenc.c
libavcodec/tiffenc.c
+1
-1
utils.c
libavcodec/utils.c
+4
-2
xwdenc.c
libavcodec/xwdenc.c
+3
-2
No files found.
libavcodec/imgconvert.c
View file @
50ba57e0
...
...
@@ -410,13 +410,15 @@ static const PixFmtInfo pix_fmt_info[AV_PIX_FMT_NB] = {
void
avcodec_get_chroma_sub_sample
(
enum
AVPixelFormat
pix_fmt
,
int
*
h_shift
,
int
*
v_shift
)
{
*
h_shift
=
av_pix_fmt_descriptors
[
pix_fmt
].
log2_chroma_w
;
*
v_shift
=
av_pix_fmt_descriptors
[
pix_fmt
].
log2_chroma_h
;
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
pix_fmt
);
*
h_shift
=
desc
->
log2_chroma_w
;
*
v_shift
=
desc
->
log2_chroma_h
;
}
int
ff_is_hwaccel_pix_fmt
(
enum
AVPixelFormat
pix_fmt
)
{
return
av_pix_fmt_descriptors
[
pix_fmt
].
flags
&
PIX_FMT_HWACCEL
;
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
pix_fmt
);
return
desc
->
flags
&
PIX_FMT_HWACCEL
;
}
int
avpicture_fill
(
AVPicture
*
picture
,
uint8_t
*
ptr
,
...
...
@@ -437,7 +439,7 @@ int avpicture_layout(const AVPicture* src, enum AVPixelFormat pix_fmt, int width
unsigned
char
*
dest
,
int
dest_size
)
{
int
i
,
j
,
nb_planes
=
0
,
linesizes
[
4
];
const
AVPixFmtDescriptor
*
desc
=
&
av_pix_fmt_descriptors
[
pix_fmt
]
;
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
pix_fmt
)
;
int
size
=
avpicture_get_size
(
pix_fmt
,
width
,
height
);
if
(
size
>
dest_size
||
size
<
0
)
...
...
@@ -469,9 +471,11 @@ int avpicture_layout(const AVPicture* src, enum AVPixelFormat pix_fmt, int width
int
avpicture_get_size
(
enum
AVPixelFormat
pix_fmt
,
int
width
,
int
height
)
{
AVPicture
dummy_pict
;
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
pix_fmt
);
if
(
av_image_check_size
(
width
,
height
,
0
,
NULL
))
return
-
1
;
if
(
av_pix_fmt_descriptors
[
pix_fmt
].
flags
&
PIX_FMT_PSEUDOPAL
)
if
(
desc
->
flags
&
PIX_FMT_PSEUDOPAL
)
// do not include palette for these pseudo-paletted formats
return
width
*
height
;
return
avpicture_fill
(
&
dummy_pict
,
NULL
,
pix_fmt
,
width
,
height
);
...
...
@@ -481,8 +485,8 @@ int avcodec_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat
int
has_alpha
)
{
const
PixFmtInfo
*
pf
,
*
ps
;
const
AVPixFmtDescriptor
*
src_desc
=
&
av_pix_fmt_descriptors
[
src_pix_fmt
]
;
const
AVPixFmtDescriptor
*
dst_desc
=
&
av_pix_fmt_descriptors
[
dst_pix_fmt
]
;
const
AVPixFmtDescriptor
*
src_desc
=
av_pix_fmt_desc_get
(
src_pix_fmt
)
;
const
AVPixFmtDescriptor
*
dst_desc
=
av_pix_fmt_desc_get
(
dst_pix_fmt
)
;
int
loss
;
ps
=
&
pix_fmt_info
[
src_pix_fmt
];
...
...
@@ -540,7 +544,7 @@ static int avg_bits_per_pixel(enum AVPixelFormat pix_fmt)
{
int
bits
;
const
PixFmtInfo
*
pf
;
const
AVPixFmtDescriptor
*
desc
=
&
av_pix_fmt_descriptors
[
pix_fmt
]
;
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
pix_fmt
)
;
pf
=
&
pix_fmt_info
[
pix_fmt
];
switch
(
pf
->
pixel_type
)
{
...
...
@@ -797,14 +801,15 @@ static inline int is_yuv_planar(const PixFmtInfo *ps)
int
av_picture_crop
(
AVPicture
*
dst
,
const
AVPicture
*
src
,
enum
AVPixelFormat
pix_fmt
,
int
top_band
,
int
left_band
)
{
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
pix_fmt
);
int
y_shift
;
int
x_shift
;
if
(
pix_fmt
<
0
||
pix_fmt
>=
AV_PIX_FMT_NB
||
!
is_yuv_planar
(
&
pix_fmt_info
[
pix_fmt
]))
return
-
1
;
y_shift
=
av_pix_fmt_descriptors
[
pix_fmt
].
log2_chroma_h
;
x_shift
=
av_pix_fmt_descriptors
[
pix_fmt
].
log2_chroma_w
;
y_shift
=
desc
->
log2_chroma_h
;
x_shift
=
desc
->
log2_chroma_w
;
dst
->
data
[
0
]
=
src
->
data
[
0
]
+
(
top_band
*
src
->
linesize
[
0
])
+
left_band
;
dst
->
data
[
1
]
=
src
->
data
[
1
]
+
((
top_band
>>
y_shift
)
*
src
->
linesize
[
1
])
+
(
left_band
>>
x_shift
);
...
...
@@ -820,6 +825,7 @@ int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width,
enum
AVPixelFormat
pix_fmt
,
int
padtop
,
int
padbottom
,
int
padleft
,
int
padright
,
int
*
color
)
{
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
pix_fmt
);
uint8_t
*
optr
;
int
y_shift
;
int
x_shift
;
...
...
@@ -830,8 +836,8 @@ int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width,
!
is_yuv_planar
(
&
pix_fmt_info
[
pix_fmt
]))
return
-
1
;
for
(
i
=
0
;
i
<
3
;
i
++
)
{
x_shift
=
i
?
av_pix_fmt_descriptors
[
pix_fmt
].
log2_chroma_w
:
0
;
y_shift
=
i
?
av_pix_fmt_descriptors
[
pix_fmt
].
log2_chroma_h
:
0
;
x_shift
=
i
?
desc
->
log2_chroma_w
:
0
;
y_shift
=
i
?
desc
->
log2_chroma_h
:
0
;
if
(
padtop
||
padleft
)
{
memset
(
dst
->
data
[
i
],
color
[
i
],
...
...
libavcodec/libopenjpegdec.c
View file @
50ba57e0
...
...
@@ -75,32 +75,32 @@ typedef struct {
static
int
libopenjpeg_matches_pix_fmt
(
const
opj_image_t
*
img
,
enum
AVPixelFormat
pix_fmt
)
{
AVPixFmtDescriptor
des
=
av_pix_fmt_descriptors
[
pix_fmt
]
;
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
pix_fmt
)
;
int
match
=
1
;
if
(
des
.
nb_components
!=
img
->
numcomps
)
{
if
(
des
c
->
nb_components
!=
img
->
numcomps
)
{
return
0
;
}
switch
(
des
.
nb_components
)
{
switch
(
des
c
->
nb_components
)
{
case
4
:
match
=
match
&&
des
.
comp
[
3
].
depth_minus1
+
1
>=
img
->
comps
[
3
].
prec
&&
des
c
->
comp
[
3
].
depth_minus1
+
1
>=
img
->
comps
[
3
].
prec
&&
1
==
img
->
comps
[
3
].
dx
&&
1
==
img
->
comps
[
3
].
dy
;
case
3
:
match
=
match
&&
des
.
comp
[
2
].
depth_minus1
+
1
>=
img
->
comps
[
2
].
prec
&&
1
<<
des
.
log2_chroma_w
==
img
->
comps
[
2
].
dx
&&
1
<<
des
.
log2_chroma_h
==
img
->
comps
[
2
].
dy
;
des
c
->
comp
[
2
].
depth_minus1
+
1
>=
img
->
comps
[
2
].
prec
&&
1
<<
des
c
->
log2_chroma_w
==
img
->
comps
[
2
].
dx
&&
1
<<
des
c
->
log2_chroma_h
==
img
->
comps
[
2
].
dy
;
case
2
:
match
=
match
&&
des
.
comp
[
1
].
depth_minus1
+
1
>=
img
->
comps
[
1
].
prec
&&
1
<<
des
.
log2_chroma_w
==
img
->
comps
[
1
].
dx
&&
1
<<
des
.
log2_chroma_h
==
img
->
comps
[
1
].
dy
;
des
c
->
comp
[
1
].
depth_minus1
+
1
>=
img
->
comps
[
1
].
prec
&&
1
<<
des
c
->
log2_chroma_w
==
img
->
comps
[
1
].
dx
&&
1
<<
des
c
->
log2_chroma_h
==
img
->
comps
[
1
].
dy
;
case
1
:
match
=
match
&&
des
.
comp
[
0
].
depth_minus1
+
1
>=
img
->
comps
[
0
].
prec
&&
des
c
->
comp
[
0
].
depth_minus1
+
1
>=
img
->
comps
[
0
].
prec
&&
1
==
img
->
comps
[
0
].
dx
&&
1
==
img
->
comps
[
0
].
dy
;
default:
...
...
@@ -146,14 +146,15 @@ static enum AVPixelFormat libopenjpeg_guess_pix_fmt(const opj_image_t *image)
static
inline
int
libopenjpeg_ispacked
(
enum
AVPixelFormat
pix_fmt
)
{
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
pix_fmt
);
int
i
,
component_plane
;
if
(
pix_fmt
==
AV_PIX_FMT_GRAY16
)
return
0
;
component_plane
=
av_pix_fmt_descriptors
[
pix_fmt
].
comp
[
0
].
plane
;
for
(
i
=
1
;
i
<
av_pix_fmt_descriptors
[
pix_fmt
].
nb_components
;
i
++
)
{
if
(
component_plane
!=
av_pix_fmt_descriptors
[
pix_fmt
].
comp
[
i
].
plane
)
component_plane
=
desc
->
comp
[
0
].
plane
;
for
(
i
=
1
;
i
<
desc
->
nb_components
;
i
++
)
{
if
(
component_plane
!=
desc
->
comp
[
i
].
plane
)
return
0
;
}
return
1
;
...
...
@@ -259,6 +260,7 @@ static int libopenjpeg_decode_frame(AVCodecContext *avctx,
int
buf_size
=
avpkt
->
size
;
LibOpenJPEGContext
*
ctx
=
avctx
->
priv_data
;
AVFrame
*
picture
=
&
ctx
->
image
,
*
output
=
data
;
const
AVPixFmtDescriptor
*
desc
;
opj_dinfo_t
*
dec
;
opj_cio_t
*
stream
;
opj_image_t
*
image
;
...
...
@@ -373,8 +375,8 @@ static int libopenjpeg_decode_frame(AVCodecContext *avctx,
goto
done
;
}
pixel_size
=
av_pix_fmt_descriptors
[
avctx
->
pix_fmt
].
comp
[
0
].
step_minus1
+
1
;
desc
=
av_pix_fmt_desc_get
(
avctx
->
pix_fmt
);
pixel_size
=
desc
->
comp
[
0
].
step_minus1
+
1
;
ispacked
=
libopenjpeg_ispacked
(
avctx
->
pix_fmt
);
switch
(
pixel_size
)
{
...
...
libavcodec/libopenjpegenc.c
View file @
50ba57e0
...
...
@@ -69,22 +69,23 @@ static void info_callback(const char *msg, void *data)
static
opj_image_t
*
libopenjpeg_create_image
(
AVCodecContext
*
avctx
,
opj_cparameters_t
*
parameters
)
{
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
avctx
->
pix_fmt
);
opj_image_cmptparm_t
*
cmptparm
;
OPJ_COLOR_SPACE
color_space
;
opj_image_t
*
img
;
int
i
;
int
sub_dx
[
4
];
int
sub_dy
[
4
];
int
numcomps
=
av_pix_fmt_descriptors
[
avctx
->
pix_fmt
].
nb_components
;
int
numcomps
=
desc
->
nb_components
;
sub_dx
[
0
]
=
sub_dx
[
3
]
=
1
;
sub_dy
[
0
]
=
sub_dy
[
3
]
=
1
;
sub_dx
[
1
]
=
sub_dx
[
2
]
=
1
<<
av_pix_fmt_descriptors
[
avctx
->
pix_fmt
].
log2_chroma_w
;
sub_dx
[
2
]
=
1
<<
desc
->
log2_chroma_w
;
sub_dy
[
1
]
=
sub_dy
[
2
]
=
1
<<
av_pix_fmt_descriptors
[
avctx
->
pix_fmt
].
log2_chroma_h
;
sub_dy
[
2
]
=
1
<<
desc
->
log2_chroma_h
;
switch
(
avctx
->
pix_fmt
)
{
case
AV_PIX_FMT_GRAY8
:
...
...
@@ -129,10 +130,8 @@ static opj_image_t *libopenjpeg_create_image(AVCodecContext *avctx,
}
for
(
i
=
0
;
i
<
numcomps
;
i
++
)
{
cmptparm
[
i
].
prec
=
av_pix_fmt_descriptors
[
avctx
->
pix_fmt
].
comp
[
i
].
depth_minus1
+
1
;
cmptparm
[
i
].
bpp
=
av_pix_fmt_descriptors
[
avctx
->
pix_fmt
].
comp
[
i
].
depth_minus1
+
1
;
cmptparm
[
i
].
prec
=
desc
->
comp
[
i
].
depth_minus1
+
1
;
cmptparm
[
i
].
bpp
=
desc
->
comp
[
i
].
depth_minus1
+
1
;
cmptparm
[
i
].
sgnd
=
0
;
cmptparm
[
i
].
dx
=
sub_dx
[
i
];
cmptparm
[
i
].
dy
=
sub_dy
[
i
];
...
...
libavcodec/mpegvideo.c
View file @
50ba57e0
...
...
@@ -1527,8 +1527,9 @@ void ff_MPV_frame_end(MpegEncContext *s)
s
->
current_picture
.
f
.
reference
&&
!
s
->
intra_only
&&
!
(
s
->
flags
&
CODEC_FLAG_EMU_EDGE
))
{
int
hshift
=
av_pix_fmt_descriptors
[
s
->
avctx
->
pix_fmt
].
log2_chroma_w
;
int
vshift
=
av_pix_fmt_descriptors
[
s
->
avctx
->
pix_fmt
].
log2_chroma_h
;
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
s
->
avctx
->
pix_fmt
);
int
hshift
=
desc
->
log2_chroma_w
;
int
vshift
=
desc
->
log2_chroma_h
;
s
->
dsp
.
draw_edges
(
s
->
current_picture
.
f
.
data
[
0
],
s
->
linesize
,
s
->
h_edge_pos
,
s
->
v_edge_pos
,
EDGE_WIDTH
,
EDGE_WIDTH
,
...
...
@@ -2342,9 +2343,10 @@ void ff_draw_horiz_band(MpegEncContext *s, int y, int h){
&&
s
->
current_picture
.
f
.
reference
&&
!
s
->
intra_only
&&
!
(
s
->
flags
&
CODEC_FLAG_EMU_EDGE
))
{
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
s
->
avctx
->
pix_fmt
);
int
sides
=
0
,
edge_h
;
int
hshift
=
av_pix_fmt_descriptors
[
s
->
avctx
->
pix_fmt
].
log2_chroma_w
;
int
vshift
=
av_pix_fmt_descriptors
[
s
->
avctx
->
pix_fmt
].
log2_chroma_h
;
int
hshift
=
desc
->
log2_chroma_w
;
int
vshift
=
desc
->
log2_chroma_h
;
if
(
y
==
0
)
sides
|=
EDGE_TOP
;
if
(
y
+
h
>=
s
->
v_edge_pos
)
sides
|=
EDGE_BOTTOM
;
...
...
libavcodec/rawdec.c
View file @
50ba57e0
...
...
@@ -119,6 +119,7 @@ static int raw_decode(AVCodecContext *avctx,
const
uint8_t
*
buf
=
avpkt
->
data
;
int
buf_size
=
avpkt
->
size
;
RawVideoContext
*
context
=
avctx
->
priv_data
;
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
avctx
->
pix_fmt
);
int
res
;
AVFrame
*
frame
=
data
;
...
...
@@ -161,7 +162,7 @@ static int raw_decode(AVCodecContext *avctx,
avctx
->
width
,
avctx
->
height
))
<
0
)
return
res
;
if
((
avctx
->
pix_fmt
==
AV_PIX_FMT_PAL8
&&
buf_size
<
context
->
length
)
||
(
av_pix_fmt_descriptors
[
avctx
->
pix_fmt
].
flags
&
PIX_FMT_PSEUDOPAL
))
{
(
desc
->
flags
&
PIX_FMT_PSEUDOPAL
))
{
frame
->
data
[
1
]
=
context
->
palette
;
}
if
(
avctx
->
pix_fmt
==
AV_PIX_FMT_PAL8
)
{
...
...
libavcodec/rawenc.c
View file @
50ba57e0
...
...
@@ -33,10 +33,12 @@
static
av_cold
int
raw_init_encoder
(
AVCodecContext
*
avctx
)
{
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
avctx
->
pix_fmt
);
avctx
->
coded_frame
=
avctx
->
priv_data
;
avctx
->
coded_frame
->
pict_type
=
AV_PICTURE_TYPE_I
;
avctx
->
coded_frame
->
key_frame
=
1
;
avctx
->
bits_per_coded_sample
=
av_get_bits_per_pixel
(
&
av_pix_fmt_descriptors
[
avctx
->
pix_fmt
]
);
avctx
->
bits_per_coded_sample
=
av_get_bits_per_pixel
(
desc
);
if
(
!
avctx
->
codec_tag
)
avctx
->
codec_tag
=
avcodec_pix_fmt_to_codec_tag
(
avctx
->
pix_fmt
);
return
0
;
...
...
libavcodec/tiffenc.c
View file @
50ba57e0
...
...
@@ -240,7 +240,7 @@ static int encode_frame(AVCodecContext * avctx, AVPacket *pkt,
case
AV_PIX_FMT_RGB24
:
case
AV_PIX_FMT_GRAY8
:
case
AV_PIX_FMT_PAL8
:
pfd
=
&
av_pix_fmt_descriptors
[
avctx
->
pix_fmt
]
;
pfd
=
av_pix_fmt_desc_get
(
avctx
->
pix_fmt
)
;
s
->
bpp
=
av_get_bits_per_pixel
(
pfd
);
if
(
pfd
->
flags
&
PIX_FMT_PAL
)
{
s
->
photometric_interpretation
=
3
;
...
...
libavcodec/utils.c
View file @
50ba57e0
...
...
@@ -247,7 +247,8 @@ void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height,
void
avcodec_align_dimensions
(
AVCodecContext
*
s
,
int
*
width
,
int
*
height
)
{
int
chroma_shift
=
av_pix_fmt_descriptors
[
s
->
pix_fmt
].
log2_chroma_w
;
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
s
->
pix_fmt
);
int
chroma_shift
=
desc
->
log2_chroma_w
;
int
linesize_align
[
AV_NUM_DATA_POINTERS
];
int
align
;
...
...
@@ -422,7 +423,8 @@ static int video_get_buffer(AVCodecContext *s, AVFrame *pic)
int
unaligned
;
AVPicture
picture
;
int
stride_align
[
AV_NUM_DATA_POINTERS
];
const
int
pixel_size
=
av_pix_fmt_descriptors
[
s
->
pix_fmt
].
comp
[
0
].
step_minus1
+
1
;
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
s
->
pix_fmt
);
const
int
pixel_size
=
desc
->
comp
[
0
].
step_minus1
+
1
;
avcodec_get_chroma_sub_sample
(
s
->
pix_fmt
,
&
h_chroma_shift
,
&
v_chroma_shift
);
...
...
libavcodec/xwdenc.c
View file @
50ba57e0
...
...
@@ -43,14 +43,15 @@ static int xwd_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
const
AVFrame
*
p
,
int
*
got_packet
)
{
enum
AVPixelFormat
pix_fmt
=
avctx
->
pix_fmt
;
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
pix_fmt
);
uint32_t
pixdepth
,
bpp
,
bpad
,
ncolors
=
0
,
lsize
,
vclass
,
be
=
0
;
uint32_t
rgb
[
3
]
=
{
0
},
bitorder
=
0
;
uint32_t
header_size
;
int
i
,
out_size
,
ret
;
uint8_t
*
ptr
,
*
buf
;
pixdepth
=
av_get_bits_per_pixel
(
&
av_pix_fmt_descriptors
[
pix_fmt
]
);
if
(
av_pix_fmt_descriptors
[
pix_fmt
].
flags
&
PIX_FMT_BE
)
pixdepth
=
av_get_bits_per_pixel
(
desc
);
if
(
desc
->
flags
&
PIX_FMT_BE
)
be
=
1
;
switch
(
pix_fmt
)
{
case
AV_PIX_FMT_ARGB
:
...
...
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