Nicolas George: > gautamr...@gmail.com (12020-07-03): >> From: Gautam Ramakrishnan <gautamr...@gmail.com> >> >> This patch adds a pgx decoder. > > Reviewing even after push, because there are problems to fix. > >> --- >> Changelog | 1 + >> doc/general.texi | 2 + >> libavcodec/Makefile | 1 + >> libavcodec/allcodecs.c | 1 + >> libavcodec/codec_desc.c | 7 ++ >> libavcodec/codec_id.h | 1 + >> libavcodec/pgxdec.c | 169 ++++++++++++++++++++++++++++++++++++++++ >> libavcodec/version.h | 4 +- >> 8 files changed, 184 insertions(+), 2 deletions(-) >> create mode 100644 libavcodec/pgxdec.c >> [...] >> +#define WRITE_FRAME(D, PIXEL, suffix) >> \ >> + static inline void write_frame_ ##D(AVPacket *avpkt, AVFrame *frame, >> GetByteContext *g, \ >> + int width, int height, int sign, >> int depth) \ >> + { >> \ >> + int i, j; >> \ >> + for (i = 0; i < height; i++) { >> \ > >> + PIXEL *line = (PIXEL*)frame->data[0] + >> i*frame->linesize[0]/sizeof(PIXEL); \ > > It would have been more elegant and more efficient to keep the > incrementation of line at the end of the loop than to keep its > initialization here. > >> + for (j = 0; j < width; j++) { >> \ >> + int val; >> \ >> + if (sign) >> \ > >> + val = (PIXEL)bytestream2_get_ ##suffix(g) + (1 << >> (depth - 1)); \ > > Casting unsigned to negative signed is not portable. >
It's not completely portable, but FFmpeg does not aim for complete portability: "Implementation defined behavior for signed integers is assumed to match the expected behavior for two’s complement". (see https://ffmpeg.org/developer.html#C-language-features) >> + else >> \ >> + val = bytestream2_get_ ##suffix(g); >> \ >> + val <<= (D - depth); >> \ > >> + *(line + j) = val; >> \ > > *(line + j) is almost always better written line[j] > >> + } >> \ >> + } >> \ >> + } >> \ >> + >> +WRITE_FRAME(8, int8_t, byte) >> +WRITE_FRAME(16, int16_t, be16) >> + - Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".