On 28/01/16 01:58, Kieran Kunhya wrote:
> On Thu, Jan 28, 2016 at 12:02 AM, Luca Barbato <[email protected]> wrote:
>> And while at it simplify a little the code.
>> ---
>>  libavcodec/v210enc.c          | 17 ++++++++++++-----
>>  libavcodec/v210enc.h          |  3 ++-
>>  libavcodec/x86/v210enc_init.c |  7 ++++---
>>  3 files changed, 18 insertions(+), 9 deletions(-)
>>
>> diff --git a/libavcodec/v210enc.c b/libavcodec/v210enc.c
>> index da0b23f..2ee5a1b 100644
>> --- a/libavcodec/v210enc.c
>> +++ b/libavcodec/v210enc.c
>> @@ -86,7 +86,8 @@ av_cold void ff_v210enc_init(V210EncContext *s)
>>  {
>>      s->pack_line_8  = v210_planar_pack_8_c;
>>      s->pack_line_10 = v210_planar_pack_10_c;
>> -    s->sample_factor = 1;
>> +    s->sample_factor_8  = 1;
>> +    s->sample_factor_10 = 1;
>>
>>      if (ARCH_X86)
>>          ff_v210enc_init_x86(s);
>> @@ -133,15 +134,18 @@ static int encode_frame(AVCodecContext *avctx, 
>> AVPacket *pkt,
>>          const uint16_t *y = (const uint16_t *)pic->data[0];
>>          const uint16_t *u = (const uint16_t *)pic->data[1];
>>          const uint16_t *v = (const uint16_t *)pic->data[2];
>> +        int sample_size   = 6 * s->sample_factor_10;
>> +        int sample_w      = avctx->width / sample_size;
>> +
>>          for (h = 0; h < avctx->height; h++) {
>>              uint32_t val;
>> -            w = (avctx->width / (6 * s->sample_factor)) * 6 * 
>> s->sample_factor;
>> +            w = sample_w * sample_size;
>>              s->pack_line_10(y, u, v, dst, w);
>>
>>              y += w;
>>              u += w >> 1;
>>              v += w >> 1;
>> -            dst += (w / (6 * s->sample_factor)) * 16 * s->sample_factor;
>> +            dst += sample_w * 16 * s->sample_factor_10;
> 
> Does this not break the rounding?

That I can see no,

    sample_w = avctx->width / sample_size

is used everywhere.


I just did

    w   = sample_w * sample_size
    off = sample_w * new_size

instead of

    w   = sample_w * sample_size
    off = w / sample_size * new_size

The round down (sample_w) is not removed.

lu
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to