Opened 10 years ago
Closed 10 years ago
#3242 closed defect (fixed)
libswscale incorrectly presents warning about "Deprecated pixel format"
Reported by: | jnvsor | Owned by: | |
---|---|---|---|
Priority: | minor | Component: | swscale |
Version: | git-master | Keywords: | |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | yes | |
Analyzed by developer: | no |
Description
libswscale incorrectly presents warning about "Deprecated pixel format" on padded rgb pixel formats
#ffmpeg-devel
leads me to believe BGR0 isn't deprecated so this is a bug
sws_init_context
gives a warning if c->srcFormat
changes from the start of the function, before that if statement however it calls:
sws_setColorspaceDetails
which calls
handle_formats
which calls
handle_0alpha
which changes the pixel formats and triggers the warning
av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, SwsFilter *dstFilter) { ... if (!c->contrast && !c->saturation && !c->dstFormatBpp) sws_setColorspaceDetails(c, ff_yuv2rgb_coeffs[SWS_CS_DEFAULT], c->srcRange, ff_yuv2rgb_coeffs[SWS_CS_DEFAULT], c->dstRange, 0, 1 << 16, 1 << 16); if(srcFormat!=c->srcFormat || dstFormat!=c->dstFormat) av_log(c, AV_LOG_WARNING, "deprecated pixel format used, make sure you did set range correctly\n"); ... } int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4], int srcRange, const int table[4], int dstRange, int brightness, int contrast, int saturation) { const AVPixFmtDescriptor *desc_dst; const AVPixFmtDescriptor *desc_src; memmove(c->srcColorspaceTable, inv_table, sizeof(int) * 4); memmove(c->dstColorspaceTable, table, sizeof(int) * 4); handle_formats(c); ... } static void handle_formats(SwsContext *c) { c->src0Alpha |= handle_0alpha(&c->srcFormat); c->dst0Alpha |= handle_0alpha(&c->dstFormat); c->srcXYZ |= handle_xyz(&c->srcFormat); c->dstXYZ |= handle_xyz(&c->dstFormat); if (c->srcXYZ || c->dstXYZ) fill_xyztables(c); } static int handle_0alpha(enum AVPixelFormat *format) { switch (*format) { case AV_PIX_FMT_0BGR : *format = AV_PIX_FMT_ABGR ; return 1; case AV_PIX_FMT_BGR0 : *format = AV_PIX_FMT_BGRA ; return 4; case AV_PIX_FMT_0RGB : *format = AV_PIX_FMT_ARGB ; return 1; case AV_PIX_FMT_RGB0 : *format = AV_PIX_FMT_RGBA ; return 4; default: return 0; } }
Reproduce:
# the only bgr0 pixel format I know of is x11grab but any rgb padded input should do it ffmpeg -f x11grab -i :0.0 -filter:v "scale=w=0:h=0" -c:v libx264 -pix_fmt yuv444p out.avi ... [x11grab @ 0xd0cd80] device: :0.0 -> display: :0.0 x: 0 y: 0 width: 640 height: 480 [x11grab @ 0xd0cd80] shared memory extension found Input #0, x11grab, from ':0.0': Duration: N/A, start: 1387920952.573846, bitrate: 294617 kb/s Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 640x480, 294617 kb/s, 29.97 tbr, 1000k tbn, 29.97 tbc File 'out.avi' already exists. Overwrite ? [y/N] y [swscaler @ 0xcfd020] deprecated pixel format used, make sure you did set range correctly
Change History (2)
comment:1 by , 10 years ago
Version: | unspecified → git-master |
---|
comment:2 by , 10 years ago
Reproduced by developer: | set |
---|---|
Resolution: | → fixed |
Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
Fixed in 51fed95dde7abe838cb55188e28f410fded009c7