X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fsgienc.c;h=d31f6340f746bf35cd218a998c864951ad0563f4;hb=11bc79089378a5ec00547d0f85bc152afdf30dfa;hp=13756f16088b2a1b8c9753cc3dc64a041f78fe90;hpb=f3881c04e93ee70567bd3fe087f49b996b026d30;p=ffmpeg diff --git a/libavcodec/sgienc.c b/libavcodec/sgienc.c index 13756f16088..d31f6340f74 100644 --- a/libavcodec/sgienc.c +++ b/libavcodec/sgienc.c @@ -39,9 +39,9 @@ typedef struct SgiContext { static av_cold int encode_init(AVCodecContext *avctx) { if (avctx->width > 65535 || avctx->height > 65535) { - av_log(avctx, AV_LOG_ERROR, - "Unsupported resolution %dx%d.\n", avctx->width, avctx->height); - av_log(avctx, AV_LOG_ERROR, "SGI does not support resolutions above 65535x65535\n"); + av_log(avctx, AV_LOG_ERROR, "Unsupported resolution %dx%d. " + "SGI does not support resolutions above 65535x65535\n", + avctx->width, avctx->height); return AVERROR_INVALIDDATA; } @@ -100,20 +100,6 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, unsigned int width, height, depth, dimension; unsigned int bytes_per_channel, pixmax, put_be; -#if FF_API_CODED_FRAME -FF_DISABLE_DEPRECATION_WARNINGS - avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; - avctx->coded_frame->key_frame = 1; -FF_ENABLE_DEPRECATION_WARNINGS -#endif - -#if FF_API_CODER_TYPE -FF_DISABLE_DEPRECATION_WARNINGS - if (avctx->coder_type == FF_CODER_TYPE_RAW) - s->rle = 0; -FF_ENABLE_DEPRECATION_WARNINGS -#endif - width = avctx->width; height = avctx->height; bytes_per_channel = 1; @@ -219,7 +205,15 @@ FF_ENABLE_DEPRECATION_WARNINGS bytestream2_put_be32(&taboff_pcb, bytestream2_tell_p(&pbc)); for (x = 0; x < width * bytes_per_channel; x += bytes_per_channel) - encode_buf[x] = in_buf[depth * x]; + if (bytes_per_channel == 1) { + encode_buf[x] = in_buf[depth * x]; + } else if (HAVE_BIGENDIAN ^ put_be) { + encode_buf[x + 1] = in_buf[depth * x]; + encode_buf[x] = in_buf[depth * x + 1]; + } else { + encode_buf[x] = in_buf[depth * x]; + encode_buf[x + 1] = in_buf[depth * x + 1]; + } length = sgi_rle_encode(&pbc, encode_buf, width, bytes_per_channel); @@ -292,4 +286,5 @@ AVCodec ff_sgi_encoder = { AV_PIX_FMT_GRAY16LE, AV_PIX_FMT_GRAY16BE, AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE }, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, };