Hi,

On Tue, Jun 7, 2011 at 4:37 AM, Kostya <[email protected]> wrote:
> On Tue, Jun 07, 2011 at 10:20:25AM +0200, Diego Biurrun wrote:
>> On Mon, Jun 06, 2011 at 03:58:43PM -0400, Ronald S. Bultje wrote:
>> > Hi,
>> >
>> > On Mon, Jun 6, 2011 at 1:04 PM, Diego Biurrun <[email protected]> wrote:
>> > > On Mon, Jun 06, 2011 at 12:12:00PM -0400, Ronald S. Bultje wrote:
>> > >> On Mon, Jun 6, 2011 at 12:04 PM, Diego Biurrun <[email protected]> wrote:
>> > >> > On Mon, Jun 06, 2011 at 11:45:38AM -0400, Ronald S. Bultje wrote:
>> > >> >> ---
>> > >> >>  libswscale/swscale.c          |  201 
>> > >> >> ++++++++++++++++-------------------------
>> > >> >>  libswscale/swscale_internal.h |    4 -
>> > >> >>  2 files changed, 76 insertions(+), 129 deletions(-)
>> > >> >
>> > >> > A bit of explanation why you do this and why you can do this would
>> > >> > be welcome.
>> > >>
>> > >> How about:
>> > >>
>> > >> "these are hacks added so you can use functions for multiple purposes.
>> > >> E.g. Say you have the following: YUYV, or UYVY, setting offset += 1
>> > >> means you can use the same function to read both.
>> > >>
>> > >> Unfortunately, that only works if alignment of the address is of no
>> > >> concern, and breaks even further if you set multiple function pointers
>> > >> in different places. Imaging the C function setting a YUYV reader for
>> > >> UYVY with offset=1, and then an optimized simd reader (optimized for
>> > >> unaligned access also) sets it back toa  UYVY reader, then it
>> > >> completely and utterly breaks.
>> > >>
>> > >> This is mostly used for alpha or BE vs LE 16 bit reading, where the
>> > >> benefit disappears as soon as you want to maintain full-bitdepth
>> > >> precision (which is what I'm working on), so let's just remove it."
>> > >>
>> > >> Wanna summarize that? :).
>> > >
>> > > They are hacks added to use functions for multiple purposes, e.g. if you 
>> > > have
>> > > YUYV or UYVY, setting offset += 1 means the same function can read both.
>> > >
>> > > Unfortunately, that only works if alignment of the address is of no 
>> > > concern,
>> > > and breaks even further if you set multiple function pointers in 
>> > > different
>> > > places. Imagine the C function setting a YUYV reader for UYVY with 
>> > > offset=1,
>> > > and then an optimized SIMD reader (optimized for unaligned access also) 
>> > > sets
>> > > it back to a UYVY reader. It will completely and utterly break.
>> > >
>> > > The hacks are mostly used for alpha or BE vs LE 16-bit reading, where the
>> > > benefit disappears as soon as you want to maintain full-bitdepth 
>> > > precision.
>> > > As this is being worked on right now, it is better to just remove the 
>> > > hacks.
>> >
>> > Too long.
>>
>> I don't see how a log message could be too long at barely a dozen lines, but
>> here goes:
> [...]
>
> My attempt:
>
> swscale: Remove alp/chr/lumSrcOffset.
>
> They are hacks added to reuse the same scaling function for different formats
> and they may cause problems when SIMD implementation of the same functions are
> used along with pure C functions.

I'll take that. Also thanks to Luca for his, also sounded good.

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

Reply via email to