Мой код очень прост; он потребляет данные YUV420P, изменяет их размер и создает изображение в формате PNG или JPEG (OS X Lion, gcc от Apple 4.2.1). Работает отлично; Я использую ffmpeg (HEAD, как и несколько дней назад), но при работе в режиме -pedantic-errors (что я люблю делать время от времени):
zc_libav.c:30: error: passing argument 2 of ‘sws_scale’ from incompatible pointer type
Ой! Ну, как выглядит мой код?
sws_scale(sws_ctx,
in_pic->data,
in_pic->linesize,
0,
in->y,
out_pic->data,
out_pic->linesize);
(Вы можете предположить, что структуры AVPicture in_pic и out_pic правильно инициализированы, так как код работает ).
Ну, а какие типы данных нарушают?
из libswscale / swscale.h:
int sws_scale(struct SwsContext *c, const uint8_t* const srcSlice[], …
из libavcodec / avcodec.h
typedef struct AVPicture {
uint8_t *data[4];
int linesize[4]; ///< number of bytes per line
} AVPicture;
Как я уже отмечал выше, когда я заменяю -pedantic-errors на -pedantic, я получаю ту же жалобу, но код компилируется и работает правильно. Для моего невротического здравомыслия, есть ли способ получить преимущества -pedantic-errors и, вы знаете, скомпилировать этот код?