History

Merge commit 'e002e3291e6dc7953f843abf56fc14f08f238b21'

* commit 'e002e3291e6dc7953f843abf56fc14f08f238b21': Use the new aes/md5/sha/tree allocation functions avutil: Add functions for allocating opaque contexts for algorithms svq3: fix pointer type warning svq3: replace unsafe pointer casting with intreadwrite macros parseutils-test: various cleanups Conflicts: doc/APIchanges libavcodec/svq3.c libavutil/parseutils.c libavutil/version.h

Michael Niedermayer committed 14 years ago

Commit f391e402 parents d6135a8 e002e3218 files · +99 −25Browse files

Unified · Split

18 files
  1. doc/APIchanges +4 −0
  2. libavcodec/flacenc.c +1 −1
  3. libavcodec/svq3.c +9 −9
  4. libavformat/crypto.c +1 −1
  5. libavformat/httpauth.c +1 −1
  6. libavformat/mxfdec.c +1 −1
  7. libavformat/nut.c +1 −1
  8. libavformat/rtmpproto.c +1 −1
  9. libavutil/aes.c +7 −0
  10. libavutil/aes.h +11 −1
  11. libavutil/md5.c +8 −0
  12. libavutil/md5.h +7 −1
  13. libavutil/parseutils.c +5 −4
  14. libavutil/sha.c +8 −0
  15. libavutil/sha.h +11 −1
  16. libavutil/tree.c +8 −1
  17. libavutil/tree.h +11 −1
  18. libavutil/version.h +4 −1
doc/APIchanges+4−0
@@ -97,6 +97,10 @@ API changes, most recent first: · 96 unmodified lines
972012-03-26 - a67d9cf - lavfi 2.66.100972012-03-26 - a67d9cf - lavfi 2.66.100
98 Add avfilter_fill_frame_from_{audio_,}buffer_ref() functions.98 Add avfilter_fill_frame_from_{audio_,}buffer_ref() functions.
99 99
1002012-10-xx - xxxxxxx - lavu 51.43.0 - aes.h, md5.h, sha.h, tree.h
101 Add functions for allocating the opaque contexts for the algorithms,
102 deprecate the context size variables.
103
1002012-10-xx - xxxxxxx - lavf 54.18.0 - avio.h1042012-10-xx - xxxxxxx - lavf 54.18.0 - avio.h
101 Add avio_closep to complement avio_close.105 Add avio_closep to complement avio_close.
102 106
libavcodec/flacenc.c+1−1
@@ -355,7 +355,7 @@ static av_cold int flac_encode_init(AVCodecContext *avctx) · 354 unmodified lines
355 s->channels, 16);355 s->channels, 16);
356 356
357 /* initialize MD5 context */357 /* initialize MD5 context */
358 s->md5ctx = av_malloc(av_md5_size);358 s->md5ctx = av_md5_alloc();
359 if (!s->md5ctx)359 if (!s->md5ctx)
360 return AVERROR(ENOMEM);360 return AVERROR(ENOMEM);
361 av_md5_init(s->md5ctx);361 av_md5_init(s->md5ctx);
libavcodec/svq3.c+9−9
@@ -411,17 +411,17 @@ static inline int svq3_mc_dir(H264Context *h, int size, int mode, int dir, · 410 unmodified lines
411 int32_t mv = pack16to32(mx,my);411 int32_t mv = pack16to32(mx,my);
412 412
413 if (part_height == 8 && i < 8) {413 if (part_height == 8 && i < 8) {
414 *(int32_t *) h->mv_cache[dir][scan8[k] + 1*8] = mv;414 AV_WN32A(h->mv_cache[dir][scan8[k] + 1*8], mv);
415 415
416 if (part_width == 8 && j < 8) {416 if (part_width == 8 && j < 8) {
417 *(int32_t *) h->mv_cache[dir][scan8[k] + 1 + 1*8] = mv;417 AV_WN32A(h->mv_cache[dir][scan8[k] + 1 + 1*8], mv);
418 }418 }
419 }419 }
420 if (part_width == 8 && j < 8) {420 if (part_width == 8 && j < 8) {
421 *(int32_t *) h->mv_cache[dir][scan8[k] + 1] = mv;421 AV_WN32A(h->mv_cache[dir][scan8[k] + 1], mv);
422 }422 }
423 if (part_width == 4 || part_height == 4) {423 if (part_width == 4 || part_height == 4) {
424 *(int32_t *) h->mv_cache[dir][scan8[k]] = mv;424 AV_WN32A(h->mv_cache[dir][scan8[k]], mv);
425 }425 }
426 }426 }
427 427
@@ -489,11 +489,11 @@ static int svq3_decode_mb(SVQ3Context *svq3, unsigned int mb_type) · 61 unmodified lines
489 for (m = 0; m < 2; m++) {489 for (m = 0; m < 2; m++) {
490 if (s->mb_x > 0 && h->intra4x4_pred_mode[h->mb2br_xy[mb_xy - 1]+6] != -1) {490 if (s->mb_x > 0 && h->intra4x4_pred_mode[h->mb2br_xy[mb_xy - 1]+6] != -1) {
491 for (i = 0; i < 4; i++) {491 for (i = 0; i < 4; i++) {
492 *(uint32_t *) h->mv_cache[m][scan8[0] - 1 + i*8] = *(uint32_t *) s->current_picture.f.motion_val[m][b_xy - 1 + i*h->b_stride];492 AV_COPY32(h->mv_cache[m][scan8[0] - 1 + i*8], s->current_picture.f.motion_val[m][b_xy - 1 + i*h->b_stride]);
493 }493 }
494 } else {494 } else {
495 for (i = 0; i < 4; i++) {495 for (i = 0; i < 4; i++) {
496 *(uint32_t *) h->mv_cache[m][scan8[0] - 1 + i*8] = 0;496 AV_ZERO32(h->mv_cache[m][scan8[0] - 1 + i*8]);
497 }497 }
498 }498 }
499 if (s->mb_y > 0) {499 if (s->mb_y > 0) {
@@ -501,14 +501,14 @@ static int svq3_decode_mb(SVQ3Context *svq3, unsigned int mb_type) · 1 unmodified line
501 memset(&h->ref_cache[m][scan8[0] - 1*8], (h->intra4x4_pred_mode[h->mb2br_xy[mb_xy - s->mb_stride]] == -1) ? PART_NOT_AVAILABLE : 1, 4);501 memset(&h->ref_cache[m][scan8[0] - 1*8], (h->intra4x4_pred_mode[h->mb2br_xy[mb_xy - s->mb_stride]] == -1) ? PART_NOT_AVAILABLE : 1, 4);
502 502
503 if (s->mb_x < (s->mb_width - 1)) {503 if (s->mb_x < (s->mb_width - 1)) {
504 *(uint32_t *) h->mv_cache[m][scan8[0] + 4 - 1*8] = *(uint32_t *) s->current_picture.f.motion_val[m][b_xy - h->b_stride + 4];504 AV_COPY32(h->mv_cache[m][scan8[0] + 4 - 1*8], s->current_picture.f.motion_val[m][b_xy - h->b_stride + 4]);
505 h->ref_cache[m][scan8[0] + 4 - 1*8] =505 h->ref_cache[m][scan8[0] + 4 - 1*8] =
506 (h->intra4x4_pred_mode[h->mb2br_xy[mb_xy - s->mb_stride + 1]+6] == -1 ||506 (h->intra4x4_pred_mode[h->mb2br_xy[mb_xy - s->mb_stride + 1]+6] == -1 ||
507 h->intra4x4_pred_mode[h->mb2br_xy[mb_xy - s->mb_stride ] ] == -1) ? PART_NOT_AVAILABLE : 1;507 h->intra4x4_pred_mode[h->mb2br_xy[mb_xy - s->mb_stride ] ] == -1) ? PART_NOT_AVAILABLE : 1;
508 }else508 }else
509 h->ref_cache[m][scan8[0] + 4 - 1*8] = PART_NOT_AVAILABLE;509 h->ref_cache[m][scan8[0] + 4 - 1*8] = PART_NOT_AVAILABLE;
510 if (s->mb_x > 0) {510 if (s->mb_x > 0) {
511 *(uint32_t *) h->mv_cache[m][scan8[0] - 1 - 1*8] = *(uint32_t *) s->current_picture.f.motion_val[m][b_xy - h->b_stride - 1];511 AV_COPY32(h->mv_cache[m][scan8[0] - 1 - 1*8], s->current_picture.f.motion_val[m][b_xy - h->b_stride - 1]);
512 h->ref_cache[m][scan8[0] - 1 - 1*8] = (h->intra4x4_pred_mode[h->mb2br_xy[mb_xy - s->mb_stride - 1]+3] == -1) ? PART_NOT_AVAILABLE : 1;512 h->ref_cache[m][scan8[0] - 1 - 1*8] = (h->intra4x4_pred_mode[h->mb2br_xy[mb_xy - s->mb_stride - 1]+3] == -1) ? PART_NOT_AVAILABLE : 1;
513 }else513 }else
514 h->ref_cache[m][scan8[0] - 1 - 1*8] = PART_NOT_AVAILABLE;514 h->ref_cache[m][scan8[0] - 1 - 1*8] = PART_NOT_AVAILABLE;
@@ -660,7 +660,7 @@ static int svq3_decode_mb(SVQ3Context *svq3, unsigned int mb_type) · 145 unmodified lines
660 if (IS_INTRA16x16(mb_type)) {660 if (IS_INTRA16x16(mb_type)) {
661 AV_ZERO128(h->mb_luma_dc[0]+0);661 AV_ZERO128(h->mb_luma_dc[0]+0);
662 AV_ZERO128(h->mb_luma_dc[0]+8);662 AV_ZERO128(h->mb_luma_dc[0]+8);
663 if (svq3_decode_block(&s->gb, *h->mb_luma_dc, 0, 1)){663 if (svq3_decode_block(&s->gb, h->mb_luma_dc[0], 0, 1)){
664 av_log(h->s.avctx, AV_LOG_ERROR, "error while decoding intra luma dc\n");664 av_log(h->s.avctx, AV_LOG_ERROR, "error while decoding intra luma dc\n");
665 return -1;665 return -1;
666 }666 }
libavformat/crypto.c+1−1
@@ -87,7 +87,7 @@ static int crypto_open2(URLContext *h, const char *uri, int flags, AVDictionary · 86 unmodified lines
87 av_log(h, AV_LOG_ERROR, "Unable to open input\n");87 av_log(h, AV_LOG_ERROR, "Unable to open input\n");
88 goto err;88 goto err;
89 }89 }
90 c->aes = av_mallocz(av_aes_size);90 c->aes = av_aes_alloc();
91 if (!c->aes) {91 if (!c->aes) {
92 ret = AVERROR(ENOMEM);92 ret = AVERROR(ENOMEM);
93 goto err;93 goto err;
libavformat/httpauth.c+1−1
@@ -159,7 +159,7 @@ static char *make_digest_auth(HTTPAuthState *state, const char *username, · 158 unmodified lines
159 ff_data_to_hex(cnonce, (const uint8_t*) cnonce_buf, sizeof(cnonce_buf), 1);159 ff_data_to_hex(cnonce, (const uint8_t*) cnonce_buf, sizeof(cnonce_buf), 1);
160 cnonce[2*sizeof(cnonce_buf)] = 0;160 cnonce[2*sizeof(cnonce_buf)] = 0;
161 161
162 md5ctx = av_malloc(av_md5_size);162 md5ctx = av_md5_alloc();
163 if (!md5ctx)163 if (!md5ctx)
164 return NULL;164 return NULL;
165 165
libavformat/mxfdec.c+1−1
@@ -350,7 +350,7 @@ static int mxf_decrypt_triplet(AVFormatContext *s, AVPacket *pkt, KLVPacket *klv · 349 unmodified lines
350 int index;350 int index;
351 351
352 if (!mxf->aesc && s->key && s->keylen == 16) {352 if (!mxf->aesc && s->key && s->keylen == 16) {
353 mxf->aesc = av_malloc(av_aes_size);353 mxf->aesc = av_aes_alloc();
354 if (!mxf->aesc)354 if (!mxf->aesc)
355 return AVERROR(ENOMEM);355 return AVERROR(ENOMEM);
356 av_aes_init(mxf->aesc, s->key, 128, 1);356 av_aes_init(mxf->aesc, s->key, 128, 1);
libavformat/nut.c+1−1
@@ -139,7 +139,7 @@ int ff_nut_sp_pts_cmp(const Syncpoint *a, const Syncpoint *b){ · 138 unmodified lines
139 139
140void ff_nut_add_sp(NUTContext *nut, int64_t pos, int64_t back_ptr, int64_t ts){140void ff_nut_add_sp(NUTContext *nut, int64_t pos, int64_t back_ptr, int64_t ts){
141 Syncpoint *sp= av_mallocz(sizeof(Syncpoint));141 Syncpoint *sp= av_mallocz(sizeof(Syncpoint));
142 struct AVTreeNode *node= av_mallocz(av_tree_node_size);142 struct AVTreeNode *node = av_tree_node_alloc();
143 143
144 nut->sp_count++;144 nut->sp_count++;
145 145
libavformat/rtmpproto.c+1−1
@@ -859,7 +859,7 @@ int ff_rtmp_calc_digest(const uint8_t *src, int len, int gap, · 858 unmodified lines
859 uint8_t hmac_buf[64+32] = {0};859 uint8_t hmac_buf[64+32] = {0};
860 int i;860 int i;
861 861
862 sha = av_mallocz(av_sha_size);862 sha = av_sha_alloc();
863 if (!sha)863 if (!sha)
864 return AVERROR(ENOMEM);864 return AVERROR(ENOMEM);
865 865
libavutil/aes.c+7−0
@@ -39,7 +39,14 @@ typedef struct AVAES { · 38 unmodified lines
39 int rounds;39 int rounds;
40} AVAES;40} AVAES;
41 41
42#if FF_API_CONTEXT_SIZE
42const int av_aes_size= sizeof(AVAES);43const int av_aes_size= sizeof(AVAES);
44#endif
45
46struct AVAES *av_aes_alloc(void)
47{
48 return av_mallocz(sizeof(struct AVAES));
49}
43 50
44static const uint8_t rcon[10] = {51static const uint8_t rcon[10] = {
45 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x3652 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36
libavutil/aes.h+11−1
@@ -23,16 +23,26 @@ · 22 unmodified lines
23 23
24#include <stdint.h>24#include <stdint.h>
25 25
26#include "attributes.h"
27#include "version.h"
28
26/**29/**
27 * @defgroup lavu_aes AES30 * @defgroup lavu_aes AES
28 * @ingroup lavu_crypto31 * @ingroup lavu_crypto
29 * @{32 * @{
30 */33 */
31 34
32extern const int av_aes_size;35#if FF_API_CONTEXT_SIZE
36extern attribute_deprecated const int av_aes_size;
37#endif
33 38
34struct AVAES;39struct AVAES;
35 40
41/**
42 * Allocate an AVAES context.
43 */
44struct AVAES *av_aes_alloc(void);
45
36/**46/**
37 * Initialize an AVAES context.47 * Initialize an AVAES context.
38 * @param key_bits 128, 192 or 25648 * @param key_bits 128, 192 or 256
libavutil/md5.c+8−0
@@ -34,6 +34,7 @@ · 33 unmodified lines
34#include "bswap.h"34#include "bswap.h"
35#include "intreadwrite.h"35#include "intreadwrite.h"
36#include "md5.h"36#include "md5.h"
37#include "mem.h"
37 38
38typedef struct AVMD5{39typedef struct AVMD5{
39 uint64_t len;40 uint64_t len;
@@ -41,7 +42,14 @@ typedef struct AVMD5{ · 1 unmodified line
41 uint32_t ABCD[4];42 uint32_t ABCD[4];
42} AVMD5;43} AVMD5;
43 44
45#if FF_API_CONTEXT_SIZE
44const int av_md5_size = sizeof(AVMD5);46const int av_md5_size = sizeof(AVMD5);
47#endif
48
49struct AVMD5 *av_md5_alloc(void)
50{
51 return av_mallocz(sizeof(struct AVMD5));
52}
45 53
46static const uint8_t S[4][4] = {54static const uint8_t S[4][4] = {
47 { 7, 12, 17, 22 }, /* round 1 */55 { 7, 12, 17, 22 }, /* round 1 */
libavutil/md5.h+7−1
@@ -23,16 +23,22 @@ · 22 unmodified lines
23 23
24#include <stdint.h>24#include <stdint.h>
25 25
26#include "attributes.h"
27#include "version.h"
28
26/**29/**
27 * @defgroup lavu_md5 MD530 * @defgroup lavu_md5 MD5
28 * @ingroup lavu_crypto31 * @ingroup lavu_crypto
29 * @{32 * @{
30 */33 */
31 34
32extern const int av_md5_size;35#if FF_API_CONTEXT_SIZE
36extern attribute_deprecated const int av_md5_size;
37#endif
33 38
34struct AVMD5;39struct AVMD5;
35 40
41struct AVMD5 *av_md5_alloc(void);
36void av_md5_init(struct AVMD5 *ctx);42void av_md5_init(struct AVMD5 *ctx);
37void av_md5_update(struct AVMD5 *ctx, const uint8_t *src, const int len);43void av_md5_update(struct AVMD5 *ctx, const uint8_t *src, const int len);
38void av_md5_final(struct AVMD5 *ctx, uint8_t *dst);44void av_md5_final(struct AVMD5 *ctx, uint8_t *dst);
libavutil/parseutils.c+5−4
@@ -690,7 +690,7 @@ int main(void) · 689 unmodified lines
690 printf("Testing av_parse_video_rate()\n");690 printf("Testing av_parse_video_rate()\n");
691 {691 {
692 int i;692 int i;
693 const char *rates[] = {693 static const char *const rates[] = {
694 "-inf",694 "-inf",
695 "inf",695 "inf",
696 "nan",696 "nan",
@@ -720,7 +720,7 @@ int main(void) · 23 unmodified lines
720 720
721 for (i = 0; i < FF_ARRAY_ELEMS(rates); i++) {721 for (i = 0; i < FF_ARRAY_ELEMS(rates); i++) {
722 int ret;722 int ret;
723 AVRational q = (AVRational){0, 0};723 AVRational q = { 0, 0 };
724 ret = av_parse_video_rate(&q, rates[i]);724 ret = av_parse_video_rate(&q, rates[i]);
725 printf("'%s' -> %d/%d %s\n",725 printf("'%s' -> %d/%d %s\n",
726 rates[i], q.num, q.den, ret ? "ERROR" : "OK");726 rates[i], q.num, q.den, ret ? "ERROR" : "OK");
@@ -731,7 +731,7 @@ int main(void) · 4 unmodified lines
731 {731 {
732 int i;732 int i;
733 uint8_t rgba[4];733 uint8_t rgba[4];
734 const char *color_names[] = {734 static const char *const color_names[] = {
735 "bikeshed",735 "bikeshed",
736 "RaNdOm",736 "RaNdOm",
737 "foo",737 "foo",
@@ -774,7 +774,8 @@ int main(void) · 36 unmodified lines
774 774
775 for (i = 0; i < FF_ARRAY_ELEMS(color_names); i++) {775 for (i = 0; i < FF_ARRAY_ELEMS(color_names); i++) {
776 if (av_parse_color(rgba, color_names[i], -1, NULL) >= 0)776 if (av_parse_color(rgba, color_names[i], -1, NULL) >= 0)
777 printf("%s -> R(%d) G(%d) B(%d) A(%d)\n", color_names[i], rgba[0], rgba[1], rgba[2], rgba[3]);777 printf("%s -> R(%d) G(%d) B(%d) A(%d)\n",
778 color_names[i], rgba[0], rgba[1], rgba[2], rgba[3]);
778 else779 else
779 printf("%s -> error\n", color_names[i]);780 printf("%s -> error\n", color_names[i]);
780 }781 }
libavutil/sha.c+8−0
@@ -26,6 +26,7 @@ · 25 unmodified lines
26#include "bswap.h"26#include "bswap.h"
27#include "sha.h"27#include "sha.h"
28#include "intreadwrite.h"28#include "intreadwrite.h"
29#include "mem.h"
29 30
30/** hash context */31/** hash context */
31typedef struct AVSHA {32typedef struct AVSHA {
@@ -37,7 +38,14 @@ typedef struct AVSHA { · 5 unmodified lines
37 void (*transform)(uint32_t *state, const uint8_t buffer[64]);38 void (*transform)(uint32_t *state, const uint8_t buffer[64]);
38} AVSHA;39} AVSHA;
39 40
41#if FF_API_CONTEXT_SIZE
40const int av_sha_size = sizeof(AVSHA);42const int av_sha_size = sizeof(AVSHA);
43#endif
44
45struct AVSHA *av_sha_alloc(void)
46{
47 return av_mallocz(sizeof(struct AVSHA));
48}
41 49
42#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))50#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
43 51
libavutil/sha.h+11−1
@@ -23,16 +23,26 @@ · 22 unmodified lines
23 23
24#include <stdint.h>24#include <stdint.h>
25 25
26#include "attributes.h"
27#include "version.h"
28
26/**29/**
27 * @defgroup lavu_sha SHA30 * @defgroup lavu_sha SHA
28 * @ingroup lavu_crypto31 * @ingroup lavu_crypto
29 * @{32 * @{
30 */33 */
31 34
32extern const int av_sha_size;35#if FF_API_CONTEXT_SIZE
36extern attribute_deprecated const int av_sha_size;
37#endif
33 38
34struct AVSHA;39struct AVSHA;
35 40
41/**
42 * Allocate an AVSHA context.
43 */
44struct AVSHA *av_sha_alloc(void);
45
36/**46/**
37 * Initialize SHA-1 or SHA-2 hashing.47 * Initialize SHA-1 or SHA-2 hashing.
38 *48 *
libavutil/tree.c+8−1
@@ -28,7 +28,14 @@ typedef struct AVTreeNode { · 27 unmodified lines
28 int state;28 int state;
29} AVTreeNode;29} AVTreeNode;
30 30
31#if FF_API_CONTEXT_SIZE
31const int av_tree_node_size = sizeof(AVTreeNode);32const int av_tree_node_size = sizeof(AVTreeNode);
33#endif
34
35struct AVTreeNode *av_tree_node_alloc(void)
36{
37 return av_mallocz(sizeof(struct AVTreeNode));
38}
32 39
33void *av_tree_find(const AVTreeNode *t, void *key,40void *av_tree_find(const AVTreeNode *t, void *key,
34 int (*cmp)(void *key, const void *b), void *next[2])41 int (*cmp)(void *key, const void *b), void *next[2])
@@ -213,7 +220,7 @@ int main (void) · 178 unmodified lines
213 }220 }
214 av_log(NULL, AV_LOG_ERROR, "inserting %4d\n", j);221 av_log(NULL, AV_LOG_ERROR, "inserting %4d\n", j);
215 if (!node)222 if (!node)
216 node = av_mallocz(av_tree_node_size);223 node = av_tree_node_alloc();
217 av_tree_insert(&root, (void *) (j + 1), cmp, &node);224 av_tree_insert(&root, (void *) (j + 1), cmp, &node);
218 225
219 j = av_lfg_get(&prng) % 86294;226 j = av_lfg_get(&prng) % 86294;
libavutil/tree.h+11−1
@@ -27,6 +27,9 @@ · 26 unmodified lines
27#ifndef AVUTIL_TREE_H27#ifndef AVUTIL_TREE_H
28#define AVUTIL_TREE_H28#define AVUTIL_TREE_H
29 29
30#include "attributes.h"
31#include "version.h"
32
30/**33/**
31 * @addtogroup lavu_tree AVTree34 * @addtogroup lavu_tree AVTree
32 * @ingroup lavu_data35 * @ingroup lavu_data
@@ -40,7 +43,14 @@ · 7 unmodified lines
40 43
41 44
42struct AVTreeNode;45struct AVTreeNode;
43extern const int av_tree_node_size;46#if FF_API_CONTEXT_SIZE
47extern attribute_deprecated const int av_tree_node_size;
48#endif
49
50/**
51 * Allocate an AVTreeNode.
52 */
53struct AVTreeNode *av_tree_node_alloc(void);
44 54
45/**55/**
46 * Find an element.56 * Find an element.
libavutil/version.h+4−1
@@ -39,7 +39,7 @@ · 38 unmodified lines
39 */39 */
40 40
41#define LIBAVUTIL_VERSION_MAJOR 5141#define LIBAVUTIL_VERSION_MAJOR 51
42#define LIBAVUTIL_VERSION_MINOR 7442#define LIBAVUTIL_VERSION_MINOR 75
43#define LIBAVUTIL_VERSION_MICRO 10043#define LIBAVUTIL_VERSION_MICRO 100
44 44
45#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \45#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
@@ -84,6 +84,9 @@ · 38 unmodified lines
84#ifndef FF_API_PIX_FMT84#ifndef FF_API_PIX_FMT
85#define FF_API_PIX_FMT (LIBAVUTIL_VERSION_MAJOR < 52)85#define FF_API_PIX_FMT (LIBAVUTIL_VERSION_MAJOR < 52)
86#endif86#endif
87#ifndef FF_API_CONTEXT_SIZE
88#define FF_API_CONTEXT_SIZE (LIBAVUTIL_VERSION_MAJOR < 52)
89#endif
87 90
88/**91/**
89 * @}92 * @}

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