mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-03-02 10:41:16 +00:00
avcodec/msvideo1enc: Check all calls to avpriv_elbg_do()
Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
ad27326e2b
commit
73f47846bd
@ -118,8 +118,10 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
|
|||||||
}
|
}
|
||||||
// try to find optimal value to fill whole 4x4 block
|
// try to find optimal value to fill whole 4x4 block
|
||||||
score = 0;
|
score = 0;
|
||||||
avpriv_elbg_do(&c->elbg, c->block, 3, 16, c->avg,
|
ret = avpriv_elbg_do(&c->elbg, c->block, 3, 16, c->avg,
|
||||||
1, 1, c->output, &c->rnd);
|
1, 1, c->output, &c->rnd);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
if(c->avg[0] == 1) // red component = 1 will be written as skip code
|
if(c->avg[0] == 1) // red component = 1 will be written as skip code
|
||||||
c->avg[0] = 0;
|
c->avg[0] = 0;
|
||||||
for(j = 0; j < 4; j++){
|
for(j = 0; j < 4; j++){
|
||||||
@ -138,8 +140,10 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
|
|||||||
}
|
}
|
||||||
// search for optimal filling of 2-color block
|
// search for optimal filling of 2-color block
|
||||||
score = 0;
|
score = 0;
|
||||||
avpriv_elbg_do(&c->elbg, c->block, 3, 16, c->codebook,
|
ret = avpriv_elbg_do(&c->elbg, c->block, 3, 16, c->codebook,
|
||||||
2, 1, c->output, &c->rnd);
|
2, 1, c->output, &c->rnd);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
// last output value should be always 1, swap codebooks if needed
|
// last output value should be always 1, swap codebooks if needed
|
||||||
if(!c->output[15]){
|
if(!c->output[15]){
|
||||||
for(i = 0; i < 3; i++)
|
for(i = 0; i < 3; i++)
|
||||||
@ -164,9 +168,11 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
|
|||||||
// search for optimal filling of 2-color 2x2 subblocks
|
// search for optimal filling of 2-color 2x2 subblocks
|
||||||
score = 0;
|
score = 0;
|
||||||
for(i = 0; i < 4; i++){
|
for(i = 0; i < 4; i++){
|
||||||
avpriv_elbg_do(&c->elbg, c->block2 + i * 4 * 3, 3, 4,
|
ret = avpriv_elbg_do(&c->elbg, c->block2 + i * 4 * 3, 3, 4,
|
||||||
c->codebook2 + i * 2 * 3, 2, 1,
|
c->codebook2 + i * 2 * 3, 2, 1,
|
||||||
c->output2 + i*4, &c->rnd);
|
c->output2 + i * 4, &c->rnd);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
// last value should be always 1, swap codebooks if needed
|
// last value should be always 1, swap codebooks if needed
|
||||||
if(!c->output2[15]){
|
if(!c->output2[15]){
|
||||||
|
Loading…
Reference in New Issue
Block a user