On 8/2/2018 4:22 PM, Martin Vignali wrote: >> >> +static int uint_y_to_float_y_wrapper(SwsContext *c, const uint8_t *src[], >> + int srcStride[], int srcSliceY, >> + int srcSliceH, uint8_t *dst[], int >> dstStride[]) >> +{ >> + int y, x; >> + int dstStrideFloat = dstStride[0] >> 2;; >> + const uint8_t *srcPtr = src[0]; >> + float *dstPtr = (float *)(dst[0] + dstStride[0] * srcSliceY); >> + >> + for (y = 0; y < srcSliceH; ++y){ >> + for (x = 0; x < c->srcW; ++x){ >> + dstPtr[x] = (float)srcPtr[x] / 255.0f; >> + } >> + srcPtr += srcStride[0]; >> + dstPtr += dstStrideFloat; >> + } >> + >> + return srcSliceH; >> +} >> + >> +static int float_y_to_uint_y_wrapper(SwsContext *c, const uint8_t* src[], >> + int srcStride[], int srcSliceY, >> + int srcSliceH, uint8_t* dst[], int >> dstStride[]) >> +{ >> + int y, x; >> + int srcStrideFloat = srcStride[0] >> 2; >> + const float *srcPtr = (const float *)src[0]; >> + uint8_t *dstPtr = dst[0] + dstStride[0] * srcSliceY; >> + >> + for (y = 0; y < srcSliceH; ++y){ >> + for (x = 0; x < c->srcW; ++x){ >> + dstPtr[x] = (uint8_t)(255.0f * FFMIN(FFMAX(srcPtr[x], 0.0f), >> 1.0f)); >> + } >> + srcPtr += srcStrideFloat; >> + dstPtr += dstStride[0]; >> + } >> + >> + return srcSliceH; >> +} >> > > > Maybe you can avoid to use float for these conversions > like in libavcodec/exr.c, where there is a float to uint16 conversion > > Martin
Unless i'm missing something, I think the point is that he was asked to not do format conversion within the filter itself. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel