Lynne (12019-08-10):
> >> +typedef struct AVEncodeInfoBlock{
> >> +    /**
> >> +     * Distance in luma pixels from the top-left corner of the visible 
> >> frame
> >> +     * to the top-left corner of the block.
> >> +     * Can be negative if top/right padding is present on the coded frame.
> >> +     */
> >> +    int src_x, src_y;
> >> +    /**
> >> +     * Width and height of the block in luma pixels
> >> +     */
> >> +    int w, h;
> >> +    /**
> >> +     * Delta quantization index for the block
> >> +     */
> >> +    int delta_q;
> >> +
> >>
> >> +    uint8_t reserved[128];
> >>
> > What are these (this one and the one below) reserved fields for?
> 
> For future extensions without breaking the API. Things like block type, 
> prediction type, motion vectors, references, etc.

I suspected as much. But remember that setting the size of reserved
after fields are added will be very tricky: it requires taking into
account alignment and padding in the structure.

I think something like that might be easier to manage (and also use less
memory right now):

typedef struct AVEncodeInfoFrame {
    ...
    size_t blocks_offset;
    size_t block_size;
}

static inline AVEncodeInfoBlock *
av_encode_info_block(AVEncodeInfoFrame *info, unsigned idx)
{
    return (AVEncodeInfoBlock *)
           ((char *)info + info->blocks_offset +
            idx * info->block_size);
}

static inline AVEncodeInfoBlock *
av_encode_info_block_next(AVEncodeInfoFrame *info, AVEncodeInfoBlock *block)
{
    return (AVEncodeInfoBlock *)
           ((char *)block + info->block_size);
}

Regards,

-- 
  Nicolas George

Attachment: signature.asc
Description: PGP signature

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to