Unified · Split
| @@ -15,6 +15,9 @@ libavutil: 2017-10-21 · 14 unmodified lines | ||
| 15 | 15 | |
| 16 | 16 | API changes, most recent first: |
| 17 | 17 | |
| 18 | +2020-07-xx - xxxxxxxxxx - lavc 58.96.100 - packet.h | |
| 19 | + Add AV_PKT_DATA_S12M_TIMECODE. | |
| 20 | + | |
| 18 | 21 | 2020-06-12 - b09fb030c1 - lavu 56.55.100 - pixdesc.h |
| 19 | 22 | Add AV_PIX_FMT_X2RGB10. |
| 20 | 23 | |
| @@ -400,6 +400,7 @@ const char *av_packet_side_data_name(enum AVPacketSideDataType type) · 399 unmodified lines | ||
| 400 | 400 | case AV_PKT_DATA_PRFT: return "Producer Reference Time"; |
| 401 | 401 | case AV_PKT_DATA_ICC_PROFILE: return "ICC Profile"; |
| 402 | 402 | case AV_PKT_DATA_DOVI_CONF: return "DOVI configuration record"; |
| 403 | + case AV_PKT_DATA_S12M_TIMECODE: return "SMPTE ST 12-1:2014 timecode"; | |
| 403 | 404 | } |
| 404 | 405 | return NULL; |
| 405 | 406 | } |
| @@ -1699,6 +1699,7 @@ int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame) · 1698 unmodified lines | ||
| 1699 | 1699 | { AV_PKT_DATA_CONTENT_LIGHT_LEVEL, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL }, |
| 1700 | 1700 | { AV_PKT_DATA_A53_CC, AV_FRAME_DATA_A53_CC }, |
| 1701 | 1701 | { AV_PKT_DATA_ICC_PROFILE, AV_FRAME_DATA_ICC_PROFILE }, |
| 1702 | + { AV_PKT_DATA_S12M_TIMECODE, AV_FRAME_DATA_S12M_TIMECODE }, | |
| 1702 | 1703 | }; |
| 1703 | 1704 | |
| 1704 | 1705 | if (pkt) { |
| @@ -282,6 +282,14 @@ enum AVPacketSideDataType { · 281 unmodified lines | ||
| 282 | 282 | */ |
| 283 | 283 | AV_PKT_DATA_DOVI_CONF, |
| 284 | 284 | |
| 285 | + /** | |
| 286 | + * Timecode which conforms to SMPTE ST 12-1:2014. The data is an array of 4 uint32_t | |
| 287 | + * where the first uint32_t describes how many (1-3) of the other timecodes are used. | |
| 288 | + * The timecode format is described in the documentation of av_timecode_get_smpte_from_framenum() | |
| 289 | + * function in libavutil/timecode.h. | |
| 290 | + */ | |
| 291 | + AV_PKT_DATA_S12M_TIMECODE, | |
| 292 | + | |
| 285 | 293 | /** |
| 286 | 294 | * The number of side data types. |
| 287 | 295 | * This is not part of the public API/ABI in the sense that it may |
| @@ -28,7 +28,7 @@ · 27 unmodified lines | ||
| 28 | 28 | #include "libavutil/version.h" |
| 29 | 29 | |
| 30 | 30 | #define LIBAVCODEC_VERSION_MAJOR 58 |
| 31 | −#define LIBAVCODEC_VERSION_MINOR 95 | |
| 31 | +#define LIBAVCODEC_VERSION_MINOR 96 | |
| 32 | 32 | #define LIBAVCODEC_VERSION_MICRO 100 |
| 33 | 33 | |
| 34 | 34 | #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ |
| @@ -34,6 +34,7 @@ · 33 unmodified lines | ||
| 34 | 34 | #include "libavutil/replaygain.h" |
| 35 | 35 | #include "libavutil/spherical.h" |
| 36 | 36 | #include "libavutil/stereo3d.h" |
| 37 | +#include "libavutil/timecode.h" | |
| 37 | 38 | |
| 38 | 39 | #include "avformat.h" |
| 39 | 40 | |
| @@ -407,6 +408,22 @@ static void dump_dovi_conf(void *ctx, const AVPacketSideData *sd) · 367 unmodified lines | ||
| 407 | 408 | dovi->dv_bl_signal_compatibility_id); |
| 408 | 409 | } |
| 409 | 410 | |
| 411 | +static void dump_s12m_timecode(void *ctx, const AVPacketSideData *sd) | |
| 412 | +{ | |
| 413 | + const uint32_t *tc = (const uint32_t *)sd->data; | |
| 414 | + | |
| 415 | + if ((sd->size != sizeof(uint32_t) * 4) || (tc[0] > 3)) { | |
| 416 | + av_log(ctx, AV_LOG_ERROR, "invalid data\n"); | |
| 417 | + return; | |
| 418 | + } | |
| 419 | + | |
| 420 | + for (int j = 1; j <= tc[0]; j++) { | |
| 421 | + char tcbuf[AV_TIMECODE_STR_SIZE]; | |
| 422 | + av_timecode_make_smpte_tc_string(tcbuf, tc[j], 0); | |
| 423 | + av_log(ctx, AV_LOG_INFO, "timecode - %s%s", tcbuf, j != tc[0] ? ", " : ""); | |
| 424 | + } | |
| 425 | +} | |
| 426 | + | |
| 410 | 427 | static void dump_sidedata(void *ctx, const AVStream *st, const char *indent) |
| 411 | 428 | { |
| 412 | 429 | int i; |
| @@ -473,6 +490,10 @@ static void dump_sidedata(void *ctx, const AVStream *st, const char *indent) · 60 unmodified lines | ||
| 473 | 490 | av_log(ctx, AV_LOG_INFO, "DOVI configuration record: "); |
| 474 | 491 | dump_dovi_conf(ctx, sd); |
| 475 | 492 | break; |
| 493 | + case AV_PKT_DATA_S12M_TIMECODE: | |
| 494 | + av_log(ctx, AV_LOG_INFO, "SMPTE ST 12-1:2014: "); | |
| 495 | + dump_s12m_timecode(ctx, sd); | |
| 496 | + break; | |
| 476 | 497 | default: |
| 477 | 498 | av_log(ctx, AV_LOG_INFO, |
| 478 | 499 | "unknown side data type %d (%d bytes)", sd->type, sd->size); |