[FFmpeg-trac] #622(swscale:closed): swscale crash when convert PIX_FMT_YUV420P -> PIX_FMT_YUVJ420P
FFmpeg
trac at avcodec.org
Sun May 12 22:35:07 CEST 2013
#622: swscale crash when convert PIX_FMT_YUV420P -> PIX_FMT_YUVJ420P
-------------------------------------+-------------------------------------
Reporter: kyh96403 | Owner: michael
Type: defect | Status: closed
Priority: important | Component: swscale
Version: unspecified | Resolution:
Keywords: | needs_more_info
Blocking: | Blocked By:
Analyzed by developer: 0 | Reproduced by developer: 0
-------------------------------------+-------------------------------------
Changes (by cehoyos):
* keywords: swscale =>
Old description:
> swscale is crash below code.
>
> #include <stdio.h>
> #include <libswscale/swscale.h>
>
> int main()
> {
> int ww = 624; // crash
> int hh = 352;
> // int ww = 48; // crash
> // int hh = 48;
> // int ww = 64; // not crash
> // int hh = 64;
> int SwsFlag = SWS_POINT | SWS_ACCURATE_RND;
> struct SwsContext *context = NULL;
> uint8_t *src_data[4], *dst_data[4];
> int src_pitch[4], dst_pitch[4];
>
> context = sws_getCachedContext(context, ww, hh, PIX_FMT_YUV420P,
> ww, hh, PIX_FMT_YUVJ420P, SwsFlag, NULL, NULL, NULL);
> src_data[0] = av_malloc(ww * hh);
> src_data[1] = av_malloc(ww * hh / 4);
> src_data[2] = av_malloc(ww * hh / 4);
> src_data[3] = NULL;
> dst_data[0] = av_malloc(ww * hh);
> dst_data[1] = av_malloc(ww * hh / 4);
> dst_data[2] = av_malloc(ww * hh / 4);
> dst_data[3] = NULL;
> src_pitch[0] = ww;
> src_pitch[1] = ww / 2;
> src_pitch[2] = ww / 2;
> src_pitch[3] = 0;
> dst_pitch[0] = ww;
> dst_pitch[1] = ww / 2;
> dst_pitch[2] = ww / 2;
> dst_pitch[3] = 0;
>
> sws_scale(context, src_data, src_pitch, 0, hh, dst_data,
> dst_pitch);
>
> return 0;
> }
New description:
swscale is crash below code.
{{{
#include <stdio.h>
#include <libswscale/swscale.h>
int main()
{
int ww = 624; // crash
int hh = 352;
// int ww = 48; // crash
// int hh = 48;
// int ww = 64; // not crash
// int hh = 64;
int SwsFlag = SWS_POINT | SWS_ACCURATE_RND;
struct SwsContext *context = NULL;
uint8_t *src_data[4], *dst_data[4];
int src_pitch[4], dst_pitch[4];
context = sws_getCachedContext(context, ww, hh, PIX_FMT_YUV420P,
ww, hh, PIX_FMT_YUVJ420P, SwsFlag, NULL, NULL, NULL);
src_data[0] = av_malloc(ww * hh);
src_data[1] = av_malloc(ww * hh / 4);
src_data[2] = av_malloc(ww * hh / 4);
src_data[3] = NULL;
dst_data[0] = av_malloc(ww * hh);
dst_data[1] = av_malloc(ww * hh / 4);
dst_data[2] = av_malloc(ww * hh / 4);
dst_data[3] = NULL;
src_pitch[0] = ww;
src_pitch[1] = ww / 2;
src_pitch[2] = ww / 2;
src_pitch[3] = 0;
dst_pitch[0] = ww;
dst_pitch[1] = ww / 2;
dst_pitch[2] = ww / 2;
dst_pitch[3] = 0;
sws_scale(context, src_data, src_pitch, 0, hh, dst_data,
dst_pitch);
return 0;
}
}}}
--
--
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/622#comment:4>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list