Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
V
VVCSoftware_VTM
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Custom Issue Tracker
Custom Issue Tracker
Labels
Merge Requests
12
Merge Requests
12
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
jvet
VVCSoftware_VTM
Commits
1a4490d6
Commit
1a4490d6
authored
Feb 06, 2019
by
Frederic Barbier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Align ALF trace with specification
parent
82fe8ea8
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
26 additions
and
26 deletions
+26
-26
source/Lib/CommonLib/AdaptiveLoopFilter.cpp
source/Lib/CommonLib/AdaptiveLoopFilter.cpp
+2
-2
source/Lib/CommonLib/TypeDef.h
source/Lib/CommonLib/TypeDef.h
+6
-6
source/Lib/DecoderLib/VLCReader.cpp
source/Lib/DecoderLib/VLCReader.cpp
+8
-8
source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp
source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp
+6
-6
source/Lib/EncoderLib/VLCWriter.cpp
source/Lib/EncoderLib/VLCWriter.cpp
+4
-4
No files found.
source/Lib/CommonLib/AdaptiveLoopFilter.cpp
View file @
1a4490d6
...
...
@@ -135,7 +135,7 @@ void AdaptiveLoopFilter::reconstructCoeff( AlfSliceParam& alfSliceParam, Channel
int
numFilters
=
isLuma
(
channel
)
?
alfSliceParam
.
numLumaFilters
:
1
;
short
*
coeff
=
isLuma
(
channel
)
?
alfSliceParam
.
lumaCoeff
:
alfSliceParam
.
chromaCoeff
;
if
(
alfSliceParam
.
coeffDeltaPredMode
Flag
&&
isLuma
(
channel
)
)
if
(
alfSliceParam
.
alfLumaCoeffDeltaPrediction
Flag
&&
isLuma
(
channel
)
)
{
for
(
int
i
=
1
;
i
<
numFilters
;
i
++
)
{
...
...
@@ -167,7 +167,7 @@ void AdaptiveLoopFilter::reconstructCoeff( AlfSliceParam& alfSliceParam, Channel
memcpy
(
m_coeffFinal
+
classIdx
*
MAX_NUM_ALF_LUMA_COEFF
,
coeff
+
filterIdx
*
MAX_NUM_ALF_LUMA_COEFF
,
sizeof
(
int16_t
)
*
numCoeff
);
}
if
(
bRedo
&&
alfSliceParam
.
coeffDeltaPredMode
Flag
)
if
(
bRedo
&&
alfSliceParam
.
alfLumaCoeffDeltaPrediction
Flag
)
{
for
(
int
i
=
numFilters
-
1
;
i
>
0
;
i
--
)
{
...
...
source/Lib/CommonLib/TypeDef.h
View file @
1a4490d6
...
...
@@ -1587,10 +1587,10 @@ struct AlfSliceParam
short
lumaCoeff
[
MAX_NUM_ALF_CLASSES
*
MAX_NUM_ALF_LUMA_COEFF
];
// alf_coeff_luma_delta[i][j]
short
chromaCoeff
[
MAX_NUM_ALF_CHROMA_COEFF
];
// alf_coeff_chroma[i]
short
filterCoeffDeltaIdx
[
MAX_NUM_ALF_CLASSES
];
// filter_coeff_delta[i]
bool
filterCoeffFlag
[
MAX_NUM_ALF_CLASSES
];
// filter_coefficient
_flag[i]
bool
alfLumaCoeffFlag
[
MAX_NUM_ALF_CLASSES
];
// alf_luma_coeff
_flag[i]
int
numLumaFilters
;
// number_of_filters_minus1 + 1
bool
coeffDeltaFlag
;
// alf_coefficients_delta_flag
bool
coeffDeltaPredModeFlag
;
// coeff_delta_pred_mode
_flag
bool
alfLumaCoeffDeltaPredictionFlag
;
// alf_luma_coeff_delta_prediction
_flag
std
::
vector
<
AlfFilterShape
>*
filterShapes
;
void
reset
()
...
...
@@ -1599,10 +1599,10 @@ struct AlfSliceParam
std
::
memset
(
lumaCoeff
,
0
,
sizeof
(
lumaCoeff
)
);
std
::
memset
(
chromaCoeff
,
0
,
sizeof
(
chromaCoeff
)
);
std
::
memset
(
filterCoeffDeltaIdx
,
0
,
sizeof
(
filterCoeffDeltaIdx
)
);
std
::
memset
(
filterCoeffFlag
,
true
,
sizeof
(
filter
CoeffFlag
)
);
std
::
memset
(
alfLumaCoeffFlag
,
true
,
sizeof
(
alfLuma
CoeffFlag
)
);
numLumaFilters
=
1
;
coeffDeltaFlag
=
false
;
coeffDeltaPredMode
Flag
=
false
;
alfLumaCoeffDeltaPrediction
Flag
=
false
;
}
const
AlfSliceParam
&
operator
=
(
const
AlfSliceParam
&
src
)
...
...
@@ -1611,10 +1611,10 @@ struct AlfSliceParam
std
::
memcpy
(
lumaCoeff
,
src
.
lumaCoeff
,
sizeof
(
lumaCoeff
)
);
std
::
memcpy
(
chromaCoeff
,
src
.
chromaCoeff
,
sizeof
(
chromaCoeff
)
);
std
::
memcpy
(
filterCoeffDeltaIdx
,
src
.
filterCoeffDeltaIdx
,
sizeof
(
filterCoeffDeltaIdx
)
);
std
::
memcpy
(
filterCoeffFlag
,
src
.
filterCoeffFlag
,
sizeof
(
filter
CoeffFlag
)
);
std
::
memcpy
(
alfLumaCoeffFlag
,
src
.
alfLumaCoeffFlag
,
sizeof
(
alfLuma
CoeffFlag
)
);
numLumaFilters
=
src
.
numLumaFilters
;
coeffDeltaFlag
=
src
.
coeffDeltaFlag
;
coeffDeltaPredModeFlag
=
src
.
coeffDeltaPredMode
Flag
;
alfLumaCoeffDeltaPredictionFlag
=
src
.
alfLumaCoeffDeltaPrediction
Flag
;
filterShapes
=
src
.
filterShapes
;
return
*
this
;
}
...
...
source/Lib/DecoderLib/VLCReader.cpp
View file @
1a4490d6
...
...
@@ -2520,21 +2520,21 @@ void HLSyntaxReader::alfFilter( AlfSliceParam& alfSliceParam, const bool isChrom
if
(
!
alfSliceParam
.
coeffDeltaFlag
)
{
std
::
memset
(
alfSliceParam
.
filterCoeffFlag
,
true
,
sizeof
(
alfSliceParam
.
filter
CoeffFlag
)
);
std
::
memset
(
alfSliceParam
.
alfLumaCoeffFlag
,
true
,
sizeof
(
alfSliceParam
.
alfLuma
CoeffFlag
)
);
if
(
alfSliceParam
.
numLumaFilters
>
1
)
{
READ_FLAG
(
code
,
"
coeff_delta_pred_mode
_flag"
);
alfSliceParam
.
coeffDeltaPredMode
Flag
=
code
;
READ_FLAG
(
code
,
"
alf_luma_coeff_delta_prediction
_flag"
);
alfSliceParam
.
alfLumaCoeffDeltaPrediction
Flag
=
code
;
}
else
{
alfSliceParam
.
coeffDeltaPredMode
Flag
=
0
;
alfSliceParam
.
alfLumaCoeffDeltaPrediction
Flag
=
0
;
}
}
else
{
alfSliceParam
.
coeffDeltaPredMode
Flag
=
0
;
alfSliceParam
.
alfLumaCoeffDeltaPrediction
Flag
=
0
;
}
}
...
...
@@ -2562,8 +2562,8 @@ void HLSyntaxReader::alfFilter( AlfSliceParam& alfSliceParam, const bool isChrom
{
for
(
int
ind
=
0
;
ind
<
alfSliceParam
.
numLumaFilters
;
++
ind
)
{
READ_FLAG
(
code
,
"
filter_coefficient
_flag[i]"
);
alfSliceParam
.
filter
CoeffFlag
[
ind
]
=
code
;
READ_FLAG
(
code
,
"
alf_luma_coeff
_flag[i]"
);
alfSliceParam
.
alfLuma
CoeffFlag
[
ind
]
=
code
;
}
}
}
...
...
@@ -2571,7 +2571,7 @@ void HLSyntaxReader::alfFilter( AlfSliceParam& alfSliceParam, const bool isChrom
// Filter coefficients
for
(
int
ind
=
0
;
ind
<
numFilters
;
++
ind
)
{
if
(
!
isChroma
&&
!
alfSliceParam
.
filter
CoeffFlag
[
ind
]
&&
alfSliceParam
.
coeffDeltaFlag
)
if
(
!
isChroma
&&
!
alfSliceParam
.
alfLuma
CoeffFlag
[
ind
]
&&
alfSliceParam
.
coeffDeltaFlag
)
{
memset
(
coeff
+
ind
*
MAX_NUM_ALF_LUMA_COEFF
,
0
,
sizeof
(
*
coeff
)
*
alfShape
.
numCoeff
);
continue
;
...
...
source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp
View file @
1a4490d6
...
...
@@ -553,7 +553,7 @@ int EncAdaptiveLoopFilter::getCoeffRate( AlfSliceParam& alfSliceParam, bool isCh
// vlc for all
for
(
int
ind
=
0
;
ind
<
numFilters
;
++
ind
)
{
if
(
isChroma
||
!
alfSliceParam
.
coeffDeltaFlag
||
alfSliceParam
.
filter
CoeffFlag
[
ind
]
)
if
(
isChroma
||
!
alfSliceParam
.
coeffDeltaFlag
||
alfSliceParam
.
alfLuma
CoeffFlag
[
ind
]
)
{
for
(
int
i
=
0
;
i
<
alfShape
.
numCoeff
-
1
;
i
++
)
{
...
...
@@ -592,7 +592,7 @@ int EncAdaptiveLoopFilter::getCoeffRate( AlfSliceParam& alfSliceParam, bool isCh
// Filter coefficients
for
(
int
ind
=
0
;
ind
<
numFilters
;
++
ind
)
{
if
(
!
isChroma
&&
!
alfSliceParam
.
filter
CoeffFlag
[
ind
]
&&
alfSliceParam
.
coeffDeltaFlag
)
if
(
!
isChroma
&&
!
alfSliceParam
.
alfLuma
CoeffFlag
[
ind
]
&&
alfSliceParam
.
coeffDeltaFlag
)
{
continue
;
}
...
...
@@ -694,15 +694,15 @@ double EncAdaptiveLoopFilter::mergeFiltersAndCost( AlfSliceParam& alfSliceParam,
distReturn
=
dist
;
alfSliceParam
.
coeffDeltaFlag
=
0
;
uiCoeffBits
=
coeffBits
;
alfSliceParam
.
coeffDeltaPredMode
Flag
=
bestPredMode
;
alfSliceParam
.
alfLumaCoeffDeltaPrediction
Flag
=
bestPredMode
;
}
else
{
distReturn
=
distForce0
;
alfSliceParam
.
coeffDeltaFlag
=
1
;
uiCoeffBits
=
coeffBitsForce0
;
memcpy
(
alfSliceParam
.
filter
CoeffFlag
,
codedVarBins
,
sizeof
(
codedVarBins
)
);
alfSliceParam
.
coeffDeltaPredMode
Flag
=
0
;
memcpy
(
alfSliceParam
.
alfLuma
CoeffFlag
,
codedVarBins
,
sizeof
(
codedVarBins
)
);
alfSliceParam
.
alfLumaCoeffDeltaPrediction
Flag
=
0
;
for
(
int
varInd
=
0
;
varInd
<
numFiltersBest
;
varInd
++
)
{
...
...
@@ -717,7 +717,7 @@ double EncAdaptiveLoopFilter::mergeFiltersAndCost( AlfSliceParam& alfSliceParam,
{
for
(
int
i
=
0
;
i
<
alfShape
.
numCoeff
;
i
++
)
{
if
(
alfSliceParam
.
coeffDeltaPredMode
Flag
)
if
(
alfSliceParam
.
alfLumaCoeffDeltaPrediction
Flag
)
{
alfSliceParam
.
lumaCoeff
[
ind
*
MAX_NUM_ALF_LUMA_COEFF
+
i
]
=
m_diffFilterCoeff
[
ind
][
i
];
}
...
...
source/Lib/EncoderLib/VLCWriter.cpp
View file @
1a4490d6
...
...
@@ -1793,7 +1793,7 @@ void HLSWriter::alfFilter( const AlfSliceParam& alfSliceParam, const bool isChro
{
if
(
alfSliceParam
.
numLumaFilters
>
1
)
{
WRITE_FLAG
(
alfSliceParam
.
coeffDeltaPredModeFlag
,
"coeff_delta_pred_mode
_flag"
);
WRITE_FLAG
(
alfSliceParam
.
alfLumaCoeffDeltaPredictionFlag
,
"alf_luma_coeff_delta_prediction
_flag"
);
}
}
}
...
...
@@ -1808,7 +1808,7 @@ void HLSWriter::alfFilter( const AlfSliceParam& alfSliceParam, const bool isChro
// vlc for all
for
(
int
ind
=
0
;
ind
<
numFilters
;
++
ind
)
{
if
(
isChroma
||
!
alfSliceParam
.
coeffDeltaFlag
||
alfSliceParam
.
filter
CoeffFlag
[
ind
]
)
if
(
isChroma
||
!
alfSliceParam
.
coeffDeltaFlag
||
alfSliceParam
.
alfLuma
CoeffFlag
[
ind
]
)
{
for
(
int
i
=
0
;
i
<
alfShape
.
numCoeff
-
1
;
i
++
)
{
...
...
@@ -1842,7 +1842,7 @@ void HLSWriter::alfFilter( const AlfSliceParam& alfSliceParam, const bool isChro
{
for
(
int
ind
=
0
;
ind
<
numFilters
;
++
ind
)
{
WRITE_FLAG
(
alfSliceParam
.
filterCoeffFlag
[
ind
],
"filter_coefficient
_flag[i]"
);
WRITE_FLAG
(
alfSliceParam
.
alfLumaCoeffFlag
[
ind
],
"alf_luma_coeff
_flag[i]"
);
}
}
}
...
...
@@ -1850,7 +1850,7 @@ void HLSWriter::alfFilter( const AlfSliceParam& alfSliceParam, const bool isChro
// Filter coefficients
for
(
int
ind
=
0
;
ind
<
numFilters
;
++
ind
)
{
if
(
!
isChroma
&&
!
alfSliceParam
.
filter
CoeffFlag
[
ind
]
&&
alfSliceParam
.
coeffDeltaFlag
)
if
(
!
isChroma
&&
!
alfSliceParam
.
alfLuma
CoeffFlag
[
ind
]
&&
alfSliceParam
.
coeffDeltaFlag
)
{
continue
;
}
...
...
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