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
679a6377
Commit
679a6377
authored
Dec 10, 2013
by
Guillaume Martres
Committed by
Michael Niedermayer
Dec 10, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
hevc: avoid some unnecessary differences with libav
Signed-off-by:
Michael Niedermayer
<
michaelni@gmx.at
>
parent
6026a5ad
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
24 additions
and
61 deletions
+24
-61
hevc.c
libavcodec/hevc.c
+2
-2
hevc.h
libavcodec/hevc.h
+7
-13
hevc_ps.c
libavcodec/hevc_ps.c
+2
-3
hevc_refs.c
libavcodec/hevc_refs.c
+1
-1
hevc_sei.c
libavcodec/hevc_sei.c
+1
-1
hevcdsp_template.c
libavcodec/hevcdsp_template.c
+11
-41
No files found.
libavcodec/hevc.c
View file @
679a6377
...
...
@@ -2294,7 +2294,7 @@ static int decode_nal_unit(HEVCContext *s, const uint8_t *nal, int length)
}
/* FIXME: This is adapted from ff_h264_decode_nal, avoiding duplication
between these functions would be nice. */
*
between these functions would be nice. */
int
ff_hevc_extract_rbsp
(
HEVCContext
*
s
,
const
uint8_t
*
src
,
int
length
,
HEVCNAL
*
nal
)
{
...
...
@@ -2857,7 +2857,7 @@ static int hevc_decode_extradata(HEVCContext *s)
avctx
->
extradata
[
2
]
>
1
))
{
/* It seems the extradata is encoded as hvcC format.
* Temporarily, we support configurationVersion==0 until 14496-15 3rd
* finalized. When finalized, configurationVersion will be 1 and we
*
is
finalized. When finalized, configurationVersion will be 1 and we
* can recognize hvcC by checking if avctx->extradata[0]==1 or not. */
int
i
,
j
,
num_arrays
,
nal_len_size
;
...
...
libavcodec/hevc.h
View file @
679a6377
...
...
@@ -374,8 +374,6 @@ typedef struct HEVCVPS {
uint8_t
vps_poc_proportional_to_timing_flag
;
int
vps_num_ticks_poc_diff_one
;
///< vps_num_ticks_poc_diff_one_minus1 + 1
int
vps_num_hrd_parameters
;
int
vps_extension_flag
;
}
HEVCVPS
;
typedef
struct
ScalingList
{
...
...
@@ -508,7 +506,7 @@ typedef struct HEVCPPS {
int
beta_offset
;
///< beta_offset_div2 * 2
int
tc_offset
;
///< tc_offset_div2 * 2
in
t
scaling_list_data_present_flag
;
uint8_
t
scaling_list_data_present_flag
;
ScalingList
scaling_list
;
uint8_t
lists_modification_present_flag
;
...
...
@@ -516,9 +514,6 @@ typedef struct HEVCPPS {
int
num_extra_slice_header_bits
;
uint8_t
slice_header_extension_present_flag
;
uint8_t
pps_extension_flag
;
uint8_t
pps_extension_data_flag
;
// Inferred parameters
int
*
column_width
;
///< ColumnWidth
int
*
row_height
;
///< RowHeight
...
...
@@ -580,8 +575,7 @@ typedef struct SliceHeader {
int
beta_offset
;
///< beta_offset_div2 * 2
int
tc_offset
;
///< tc_offset_div2 * 2
int
max_num_merge_cand
;
///< 5 - 5_minus_max_num_merge_cand
unsigned
int
max_num_merge_cand
;
///< 5 - 5_minus_max_num_merge_cand
int
*
entry_point_offset
;
int
*
offset
;
...
...
@@ -768,7 +762,7 @@ typedef struct HEVCLocalContext {
typedef
struct
HEVCContext
{
const
AVClass
*
c
;
// needed by private avoptions
AVCodecContext
*
avctx
;
AVCodecContext
*
avctx
;
struct
HEVCContext
*
sList
[
MAX_NB_THREADS
];
...
...
@@ -791,9 +785,9 @@ typedef struct HEVCContext {
AVFrame
*
tmp_frame
;
AVFrame
*
output_frame
;
HEVCVPS
*
vps
;
const
HEVCVPS
*
vps
;
const
HEVCSPS
*
sps
;
HEVCPPS
*
pps
;
const
HEVCPPS
*
pps
;
AVBufferRef
*
vps_list
[
MAX_VPS_COUNT
];
AVBufferRef
*
sps_list
[
MAX_SPS_COUNT
];
AVBufferRef
*
pps_list
[
MAX_PPS_COUNT
];
...
...
@@ -876,8 +870,8 @@ typedef struct HEVCContext {
uint8_t
md5
[
3
][
16
];
uint8_t
is_md5
;
in
t
context_initialized
;
int
is_nalff
;
///< this flag is != 0 if bitstream is encapsulated
uint8_
t
context_initialized
;
uint8_t
is_nalff
;
///< this flag is != 0 if bitstream is encapsulated
///< as a format defined in 14496-15
int
apply_defdispwin
;
...
...
libavcodec/hevc_ps.c
View file @
679a6377
...
...
@@ -412,8 +412,7 @@ int ff_hevc_decode_nal_vps(HEVCContext *s)
decode_hrd
(
s
,
common_inf_present
,
vps
->
vps_max_sub_layers
);
}
}
vps
->
vps_extension_flag
=
get_bits1
(
gb
);
get_bits1
(
gb
);
/* vps_extension_flag */
av_buffer_unref
(
&
s
->
vps_list
[
vps_id
]);
s
->
vps_list
[
vps_id
]
=
vps_buf
;
...
...
@@ -1183,7 +1182,7 @@ int ff_hevc_decode_nal_pps(HEVCContext *s)
}
pps
->
slice_header_extension_present_flag
=
get_bits1
(
gb
);
pps
->
pps_extension_flag
=
get_bits1
(
gb
);
skip_bits1
(
gb
);
// pps_extension_flag
// Inferred parameters
pps
->
col_bd
=
av_malloc_array
(
pps
->
num_tile_columns
+
1
,
sizeof
(
*
pps
->
col_bd
));
...
...
libavcodec/hevc_refs.c
View file @
679a6377
/*
* HEVC video
D
ecoder
* HEVC video
d
ecoder
*
* Copyright (C) 2012 - 2013 Guillaume Martres
* Copyright (C) 2012 - 2013 Gildas Cocherel
...
...
libavcodec/hevc_sei.c
View file @
679a6377
...
...
@@ -22,8 +22,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "hevc.h"
#include "golomb.h"
#include "hevc.h"
static
void
decode_nal_sei_decoded_picture_hash
(
HEVCContext
*
s
)
{
...
...
libavcodec/hevcdsp_template.c
View file @
679a6377
...
...
@@ -194,8 +194,6 @@ static void FUNC(transform_4x4_luma_add)(uint8_t *_dst, int16_t *coeffs,
assign(dst[2 * dstep], e1 - o1); \
assign(dst[3 * dstep], e0 - o0); \
} while (0)
#define TR_4_1(dst, src) TR_4(dst, src, 4, 4, SCALE)
#define TR_4_2(dst, src) TR_4(dst, src, 1, 1, ADD_AND_SCALE)
static
void
FUNC
(
transform_4x4_add
)(
uint8_t
*
_dst
,
int16_t
*
coeffs
,
ptrdiff_t
stride
)
...
...
@@ -209,14 +207,14 @@ static void FUNC(transform_4x4_add)(uint8_t *_dst, int16_t *coeffs,
stride
/=
sizeof
(
pixel
);
for
(
i
=
0
;
i
<
4
;
i
++
)
{
TR_4
_1
(
src
,
src
);
TR_4
(
src
,
src
,
4
,
4
,
SCALE
);
src
++
;
}
shift
=
20
-
BIT_DEPTH
;
add
=
1
<<
(
shift
-
1
);
for
(
i
=
0
;
i
<
4
;
i
++
)
{
TR_4
_2
(
dst
,
coeffs
);
TR_4
(
dst
,
coeffs
,
1
,
1
,
ADD_AND_SCALE
);
coeffs
+=
4
;
dst
+=
stride
;
}
...
...
@@ -270,13 +268,7 @@ static void FUNC(transform_4x4_add)(uint8_t *_dst, int16_t *coeffs,
} \
} while (0)
#define TR_8_1(dst, src) TR_8(dst, src, 8, 8, SCALE)
#define TR_16_1(dst, src) TR_16(dst, src, 16, 16, SCALE)
#define TR_32_1(dst, src) TR_32(dst, src, 32, 32, SCALE)
#define TR_8_2(dst, src) TR_8(dst, src, 1, 1, ADD_AND_SCALE)
#define TR_16_2(dst, src) TR_16(dst, src, 1, 1, ADD_AND_SCALE)
#define TR_32_2(dst, src) TR_32(dst, src, 1, 1, ADD_AND_SCALE)
static
void
FUNC
(
transform_8x8_add
)(
uint8_t
*
_dst
,
int16_t
*
coeffs
,
ptrdiff_t
stride
)
...
...
@@ -290,14 +282,14 @@ static void FUNC(transform_8x8_add)(uint8_t *_dst, int16_t *coeffs,
stride
/=
sizeof
(
pixel
);
for
(
i
=
0
;
i
<
8
;
i
++
)
{
TR_8
_1
(
src
,
src
);
TR_8
(
src
,
src
,
8
,
8
,
SCALE
);
src
++
;
}
shift
=
20
-
BIT_DEPTH
;
add
=
1
<<
(
shift
-
1
);
for
(
i
=
0
;
i
<
8
;
i
++
)
{
TR_8
_2
(
dst
,
coeffs
);
TR_8
(
dst
,
coeffs
,
1
,
1
,
ADD_AND_SCALE
);
coeffs
+=
8
;
dst
+=
stride
;
}
...
...
@@ -315,14 +307,14 @@ static void FUNC(transform_16x16_add)(uint8_t *_dst, int16_t *coeffs,
stride
/=
sizeof
(
pixel
);
for
(
i
=
0
;
i
<
16
;
i
++
)
{
TR_16
_1
(
src
,
src
);
TR_16
(
src
,
src
,
16
,
16
,
SCALE
);
src
++
;
}
shift
=
20
-
BIT_DEPTH
;
add
=
1
<<
(
shift
-
1
);
for
(
i
=
0
;
i
<
16
;
i
++
)
{
TR_16
_2
(
dst
,
coeffs
);
TR_16
(
dst
,
coeffs
,
1
,
1
,
ADD_AND_SCALE
);
coeffs
+=
16
;
dst
+=
stride
;
}
...
...
@@ -331,15 +323,6 @@ static void FUNC(transform_16x16_add)(uint8_t *_dst, int16_t *coeffs,
static
void
FUNC
(
transform_32x32_add
)(
uint8_t
*
_dst
,
int16_t
*
coeffs
,
ptrdiff_t
stride
)
{
#define IT32x32_even(i,w) ( src[ 0*w] * transform[ 0][i] ) + ( src[16*w] * transform[16][i] )
#define IT32x32_odd(i,w) ( src[ 8*w] * transform[ 8][i] ) + ( src[24*w] * transform[24][i] )
#define IT16x16(i,w) ( src[ 4*w] * transform[ 4][i] ) + ( src[12*w] * transform[12][i] ) + ( src[20*w] * transform[20][i] ) + ( src[28*w] * transform[28][i] )
#define IT8x8(i,w) ( src[ 2*w] * transform[ 2][i] ) + ( src[ 6*w] * transform[ 6][i] ) + ( src[10*w] * transform[10][i] ) + ( src[14*w] * transform[14][i] ) + \
( src[18*w] * transform[18][i] ) + ( src[22*w] * transform[22][i] ) + ( src[26*w] * transform[26][i] ) + ( src[30*w] * transform[30][i] )
#define IT4x4(i,w) ( src[ 1*w] * transform[ 1][i] ) + ( src[ 3*w] * transform[ 3][i] ) + ( src[ 5*w] * transform[ 5][i] ) + ( src[ 7*w] * transform[ 7][i] ) + \
( src[ 9*w] * transform[ 9][i] ) + ( src[11*w] * transform[11][i] ) + ( src[13*w] * transform[13][i] ) + ( src[15*w] * transform[15][i] ) + \
( src[17*w] * transform[17][i] ) + ( src[19*w] * transform[19][i] ) + ( src[21*w] * transform[21][i] ) + ( src[23*w] * transform[23][i] ) + \
( src[25*w] * transform[25][i] ) + ( src[27*w] * transform[27][i] ) + ( src[29*w] * transform[29][i] ) + ( src[31*w] * transform[31][i] )
int
i
;
pixel
*
dst
=
(
pixel
*
)
_dst
;
int
shift
=
7
;
...
...
@@ -349,22 +332,17 @@ static void FUNC(transform_32x32_add)(uint8_t *_dst, int16_t *coeffs,
stride
/=
sizeof
(
pixel
);
for
(
i
=
0
;
i
<
32
;
i
++
)
{
TR_32
_1
(
src
,
src
);
TR_32
(
src
,
src
,
32
,
32
,
SCALE
);
src
++
;
}
src
=
coeffs
;
shift
=
20
-
BIT_DEPTH
;
add
=
1
<<
(
shift
-
1
);
for
(
i
=
0
;
i
<
32
;
i
++
)
{
TR_32
_2
(
dst
,
coeffs
);
TR_32
(
dst
,
coeffs
,
1
,
1
,
ADD_AND_SCALE
);
coeffs
+=
32
;
dst
+=
stride
;
}
#undef IT32x32_even
#undef IT32x32_odd
#undef IT16x16
#undef IT8x8
#undef IT4x4
}
static
void
FUNC
(
sao_band_filter
)(
uint8_t
*
_dst
,
uint8_t
*
_src
,
...
...
@@ -670,6 +648,7 @@ static void FUNC(sao_edge_filter_2)(uint8_t *_dst, uint8_t *_src,
int
chroma
=
!!
c_idx
;
int
*
sao_offset_val
=
sao
->
offset_val
[
c_idx
];
int
sao_eo_class
=
sao
->
eo_class
[
c_idx
];
int
init_x
=
0
,
init_y
=
0
,
width
=
_width
,
height
=
_height
;
static
const
int8_t
pos
[
4
][
2
][
2
]
=
{
{
{
-
1
,
0
},
{
1
,
0
}
},
// horizontal
...
...
@@ -679,9 +658,8 @@ static void FUNC(sao_edge_filter_2)(uint8_t *_dst, uint8_t *_src,
};
static
const
uint8_t
edge_idx
[]
=
{
1
,
2
,
0
,
3
,
4
};
int
init_x
=
0
,
init_y
=
0
,
width
=
_width
,
height
=
_height
;
#define CMP(a, b) ((a) > (b) ? 1 : ((a) == (b) ? 0 : -1))
stride
/=
sizeof
(
pixel
);
init_x
=
-
(
8
>>
chroma
)
-
2
;
...
...
@@ -822,17 +800,9 @@ static void FUNC(sao_edge_filter_3)(uint8_t *_dst, uint8_t *_src,
#undef SCALE
#undef ADD_AND_SCALE
#undef TR_4
#undef TR_4_1
#undef TR_4_2
#undef TR_8
#undef TR_8_1
#undef TR_8_2
#undef TR_16
#undef TR_16_1
#undef TR_16_2
#undef TR_32
#undef TR_32_1
#undef TR_32_2
static
void
FUNC
(
put_hevc_qpel_pixels
)(
int16_t
*
dst
,
ptrdiff_t
dststride
,
uint8_t
*
_src
,
ptrdiff_t
_srcstride
,
...
...
@@ -1216,7 +1186,7 @@ static void FUNC(hevc_loop_filter_luma)(uint8_t *_pix,
const
int
no_p
=
_no_p
[
j
];
const
int
no_q
=
_no_q
[
j
];
if
(
d0
+
d3
>=
beta
/*|| tc <= 0*/
)
{
if
(
d0
+
d3
>=
beta
)
{
pix
+=
4
*
ystride
;
continue
;
}
else
{
...
...
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