History

Introduce slice threads flag.

Ronald S. Bultje committed 15 years ago

Commit 94f74511 parent 3283f2712 files · +23 −10Browse files

Unified · Split

12 files
  1. doc/APIchanges +3 −0
  2. libavcodec/avcodec.h +4 −0
  3. libavcodec/dnxhdenc.c +1 −0
  4. libavcodec/dv.c +2 −1
  5. libavcodec/ffv1.c +2 −1
  6. libavcodec/h264.c +2 −1
  7. libavcodec/mpeg12.c +2 −2
  8. libavcodec/mpeg12enc.c +2 −2
  9. libavcodec/mpeg4videoenc.c +1 −1
  10. libavcodec/mpegvideo_enc.c +1 −0
  11. libavcodec/pthread.c +2 −1
  12. libavcodec/version.h +1 −1
doc/APIchanges+3−0
@@ -13,6 +13,9 @@ libavutil: 2011-04-18 · 12 unmodified lines
13 13
14API changes, most recent first:14API changes, most recent first:
15 15
162011-04-21 - XXXXXX - lavc 53.1.0 - avcodec.h
17 Add CODEC_CAP_SLICE_THREADS for codecs supporting sliced threading.
18
162011-04-15 - lavc 52.120.0 - avcodec.h192011-04-15 - lavc 52.120.0 - avcodec.h
17 AVPacket structure got additional members for passing side information:20 AVPacket structure got additional members for passing side information:
18 4de339e introduce side information for AVPacket21 4de339e introduce side information for AVPacket
libavcodec/avcodec.h+4−0
@@ -676,6 +676,10 @@ typedef struct RcOverride{ · 675 unmodified lines
676 * Codec supports frame-level multithreading.676 * Codec supports frame-level multithreading.
677 */677 */
678#define CODEC_CAP_FRAME_THREADS 0x1000678#define CODEC_CAP_FRAME_THREADS 0x1000
679/**
680 * Codec supports slice-based (or partition-based) multithreading.
681 */
682#define CODEC_CAP_SLICE_THREADS 0x2000
679 683
680//The following defines may change, don't expect compatibility if you use them.684//The following defines may change, don't expect compatibility if you use them.
681#define MB_TYPE_INTRA4x4 0x0001685#define MB_TYPE_INTRA4x4 0x0001
libavcodec/dnxhdenc.c+1−0
@@ -869,6 +869,7 @@ AVCodec ff_dnxhd_encoder = { · 868 unmodified lines
869 dnxhd_encode_init,869 dnxhd_encode_init,
870 dnxhd_encode_picture,870 dnxhd_encode_picture,
871 dnxhd_encode_end,871 dnxhd_encode_end,
872 .capabilities = CODEC_CAP_SLICE_THREADS,
872 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_YUV422P, PIX_FMT_NONE},873 .pix_fmts = (const enum PixelFormat[]){PIX_FMT_YUV422P, PIX_FMT_NONE},
873 .long_name = NULL_IF_CONFIG_SMALL("VC3/DNxHD"),874 .long_name = NULL_IF_CONFIG_SMALL("VC3/DNxHD"),
874 .priv_class = &class,875 .priv_class = &class,
libavcodec/dv.c+2−1
@@ -1297,6 +1297,7 @@ AVCodec ff_dvvideo_encoder = { · 1296 unmodified lines
1297 sizeof(DVVideoContext),1297 sizeof(DVVideoContext),
1298 dvvideo_init_encoder,1298 dvvideo_init_encoder,
1299 dvvideo_encode_frame,1299 dvvideo_encode_frame,
1300 .capabilities = CODEC_CAP_SLICE_THREADS,
1300 .pix_fmts = (const enum PixelFormat[]) {PIX_FMT_YUV411P, PIX_FMT_YUV422P, PIX_FMT_YUV420P, PIX_FMT_NONE},1301 .pix_fmts = (const enum PixelFormat[]) {PIX_FMT_YUV411P, PIX_FMT_YUV422P, PIX_FMT_YUV420P, PIX_FMT_NONE},
1301 .long_name = NULL_IF_CONFIG_SMALL("DV (Digital Video)"),1302 .long_name = NULL_IF_CONFIG_SMALL("DV (Digital Video)"),
1302};1303};
@@ -1312,7 +1313,7 @@ AVCodec ff_dvvideo_decoder = { · 9 unmodified lines
1312 NULL,1313 NULL,
1313 dvvideo_close,1314 dvvideo_close,
1314 dvvideo_decode_frame,1315 dvvideo_decode_frame,
1315 CODEC_CAP_DR1,1316 CODEC_CAP_DR1 | CODEC_CAP_SLICE_THREADS,
1316 NULL,1317 NULL,
1317 .max_lowres = 3,1318 .max_lowres = 3,
1318 .long_name = NULL_IF_CONFIG_SMALL("DV (Digital Video)"),1319 .long_name = NULL_IF_CONFIG_SMALL("DV (Digital Video)"),
libavcodec/ffv1.c+2−1
@@ -1795,7 +1795,7 @@ AVCodec ff_ffv1_decoder = { · 1794 unmodified lines
1795 NULL,1795 NULL,
1796 common_end,1796 common_end,
1797 decode_frame,1797 decode_frame,
1798 CODEC_CAP_DR1 /*| CODEC_CAP_DRAW_HORIZ_BAND*/,1798 CODEC_CAP_DR1 /*| CODEC_CAP_DRAW_HORIZ_BAND*/ | CODEC_CAP_SLICE_THREADS,
1799 NULL,1799 NULL,
1800 .long_name= NULL_IF_CONFIG_SMALL("FFmpeg video codec #1"),1800 .long_name= NULL_IF_CONFIG_SMALL("FFmpeg video codec #1"),
1801};1801};
@@ -1809,6 +1809,7 @@ AVCodec ff_ffv1_encoder = { · 7 unmodified lines
1809 encode_init,1809 encode_init,
1810 encode_frame,1810 encode_frame,
1811 common_end,1811 common_end,
1812 .capabilities = CODEC_CAP_SLICE_THREADS,
1812 .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_YUV444P, PIX_FMT_YUV422P, PIX_FMT_YUV411P, PIX_FMT_YUV410P, PIX_FMT_RGB32, PIX_FMT_YUV420P16, PIX_FMT_YUV422P16, PIX_FMT_YUV444P16, PIX_FMT_NONE},1813 .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_YUV444P, PIX_FMT_YUV422P, PIX_FMT_YUV411P, PIX_FMT_YUV410P, PIX_FMT_RGB32, PIX_FMT_YUV420P16, PIX_FMT_YUV422P16, PIX_FMT_YUV444P16, PIX_FMT_NONE},
1813 .long_name= NULL_IF_CONFIG_SMALL("FFmpeg video codec #1"),1814 .long_name= NULL_IF_CONFIG_SMALL("FFmpeg video codec #1"),
1814};1815};
libavcodec/h264.c+2−1
@@ -3426,7 +3426,8 @@ AVCodec ff_h264_decoder = { · 3425 unmodified lines
3426 NULL,3426 NULL,
3427 ff_h264_decode_end,3427 ff_h264_decode_end,
3428 decode_frame,3428 decode_frame,
3429 /*CODEC_CAP_DRAW_HORIZ_BAND |*/ CODEC_CAP_DR1 | CODEC_CAP_DELAY,3429 /*CODEC_CAP_DRAW_HORIZ_BAND |*/ CODEC_CAP_DR1 | CODEC_CAP_DELAY |
3430 CODEC_CAP_SLICE_THREADS,
3430 .flush= flush_dpb,3431 .flush= flush_dpb,
3431 .long_name = NULL_IF_CONFIG_SMALL("H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"),3432 .long_name = NULL_IF_CONFIG_SMALL("H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"),
3432 .profiles = NULL_IF_CONFIG_SMALL(profiles),3433 .profiles = NULL_IF_CONFIG_SMALL(profiles),
libavcodec/mpeg12.c+2−2
@@ -2523,7 +2523,7 @@ AVCodec ff_mpeg2video_decoder = { · 2522 unmodified lines
2523 NULL,2523 NULL,
2524 mpeg_decode_end,2524 mpeg_decode_end,
2525 mpeg_decode_frame,2525 mpeg_decode_frame,
2526 CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED | CODEC_CAP_DELAY,2526 CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED | CODEC_CAP_DELAY | CODEC_CAP_SLICE_THREADS,
2527 .flush= flush,2527 .flush= flush,
2528 .max_lowres= 3,2528 .max_lowres= 3,
2529 .long_name= NULL_IF_CONFIG_SMALL("MPEG-2 video"),2529 .long_name= NULL_IF_CONFIG_SMALL("MPEG-2 video"),
@@ -2540,7 +2540,7 @@ AVCodec ff_mpegvideo_decoder = { · 10 unmodified lines
2540 NULL,2540 NULL,
2541 mpeg_decode_end,2541 mpeg_decode_end,
2542 mpeg_decode_frame,2542 mpeg_decode_frame,
2543 CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED | CODEC_CAP_DELAY,2543 CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED | CODEC_CAP_DELAY | CODEC_CAP_SLICE_THREADS,
2544 .flush= flush,2544 .flush= flush,
2545 .max_lowres= 3,2545 .max_lowres= 3,
2546 .long_name= NULL_IF_CONFIG_SMALL("MPEG-1 video"),2546 .long_name= NULL_IF_CONFIG_SMALL("MPEG-1 video"),
libavcodec/mpeg12enc.c+2−2
@@ -940,7 +940,7 @@ AVCodec ff_mpeg1video_encoder = { · 939 unmodified lines
940 MPV_encode_end,940 MPV_encode_end,
941 .supported_framerates= ff_frame_rate_tab+1,941 .supported_framerates= ff_frame_rate_tab+1,
942 .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},942 .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
943 .capabilities= CODEC_CAP_DELAY,943 .capabilities= CODEC_CAP_DELAY | CODEC_CAP_SLICE_THREADS,
944 .long_name= NULL_IF_CONFIG_SMALL("MPEG-1 video"),944 .long_name= NULL_IF_CONFIG_SMALL("MPEG-1 video"),
945};945};
946 946
@@ -954,6 +954,6 @@ AVCodec ff_mpeg2video_encoder = { · 7 unmodified lines
954 MPV_encode_end,954 MPV_encode_end,
955 .supported_framerates= ff_frame_rate_tab+1,955 .supported_framerates= ff_frame_rate_tab+1,
956 .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_YUV422P, PIX_FMT_NONE},956 .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_YUV422P, PIX_FMT_NONE},
957 .capabilities= CODEC_CAP_DELAY,957 .capabilities= CODEC_CAP_DELAY | CODEC_CAP_SLICE_THREADS,
958 .long_name= NULL_IF_CONFIG_SMALL("MPEG-2 video"),958 .long_name= NULL_IF_CONFIG_SMALL("MPEG-2 video"),
959};959};
libavcodec/mpeg4videoenc.c+1−1
@@ -1347,6 +1347,6 @@ AVCodec ff_mpeg4_encoder = { · 1346 unmodified lines
1347 MPV_encode_picture,1347 MPV_encode_picture,
1348 MPV_encode_end,1348 MPV_encode_end,
1349 .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},1349 .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
1350 .capabilities= CODEC_CAP_DELAY,1350 .capabilities= CODEC_CAP_DELAY | CODEC_CAP_SLICE_THREADS,
1351 .long_name= NULL_IF_CONFIG_SMALL("MPEG-4 part 2"),1351 .long_name= NULL_IF_CONFIG_SMALL("MPEG-4 part 2"),
1352};1352};
libavcodec/mpegvideo_enc.c+1−0
@@ -3800,6 +3800,7 @@ AVCodec ff_h263p_encoder = { · 3799 unmodified lines
3800 MPV_encode_init,3800 MPV_encode_init,
3801 MPV_encode_picture,3801 MPV_encode_picture,
3802 MPV_encode_end,3802 MPV_encode_end,
3803 .capabilities = CODEC_CAP_SLICE_THREADS,
3803 .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},3804 .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
3804 .long_name= NULL_IF_CONFIG_SMALL("H.263+ / H.263-1998 / H.263 version 2"),3805 .long_name= NULL_IF_CONFIG_SMALL("H.263+ / H.263-1998 / H.263 version 2"),
3805};3806};
libavcodec/pthread.c+2−1
@@ -877,7 +877,8 @@ static void validate_thread_parameters(AVCodecContext *avctx) · 876 unmodified lines
877 avctx->active_thread_type = 0;877 avctx->active_thread_type = 0;
878 } else if (frame_threading_supported && (avctx->thread_type & FF_THREAD_FRAME)) {878 } else if (frame_threading_supported && (avctx->thread_type & FF_THREAD_FRAME)) {
879 avctx->active_thread_type = FF_THREAD_FRAME;879 avctx->active_thread_type = FF_THREAD_FRAME;
880 } else if (avctx->thread_type & FF_THREAD_SLICE) {880 } else if (avctx->codec->capabilities & CODEC_CAP_SLICE_THREADS &&
881 avctx->thread_type & FF_THREAD_SLICE) {
881 avctx->active_thread_type = FF_THREAD_SLICE;882 avctx->active_thread_type = FF_THREAD_SLICE;
882 }883 }
883}884}
libavcodec/version.h+1−1
@@ -21,7 +21,7 @@ · 20 unmodified lines
21#define AVCODEC_VERSION_H21#define AVCODEC_VERSION_H
22 22
23#define LIBAVCODEC_VERSION_MAJOR 5323#define LIBAVCODEC_VERSION_MAJOR 53
24#define LIBAVCODEC_VERSION_MINOR 024#define LIBAVCODEC_VERSION_MINOR 1
25#define LIBAVCODEC_VERSION_MICRO 025#define LIBAVCODEC_VERSION_MICRO 0
26 26
27#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \27#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t