You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	Implement av_get_codec_tag_string() and use it in ffprobe.
Originally committed as revision 23421 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
		
							
								
								
									
										14
									
								
								ffprobe.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								ffprobe.c
									
									
									
									
									
								
							| @@ -120,7 +120,6 @@ static void show_stream(AVFormatContext *fmt_ctx, int stream_idx) | ||||
|     AVCodec *dec; | ||||
|     char val_str[128]; | ||||
|     AVMetadataTag *tag = NULL; | ||||
|     char a, b, c, d; | ||||
|     AVRational display_aspect_ratio; | ||||
|  | ||||
|     printf("[STREAM]\n"); | ||||
| @@ -139,16 +138,9 @@ static void show_stream(AVFormatContext *fmt_ctx, int stream_idx) | ||||
|         printf("codec_time_base=%d/%d\n", dec_ctx->time_base.num, dec_ctx->time_base.den); | ||||
|  | ||||
|         /* print AVI/FourCC tag */ | ||||
|         a = dec_ctx->codec_tag     & 0xff; | ||||
|         b = dec_ctx->codec_tag>>8  & 0xff; | ||||
|         c = dec_ctx->codec_tag>>16 & 0xff; | ||||
|         d = dec_ctx->codec_tag>>24 & 0xff; | ||||
|         printf("codec_tag_string="); | ||||
|         if (isprint(a)) printf("%c", a); else printf("[%d]", a); | ||||
|         if (isprint(b)) printf("%c", b); else printf("[%d]", b); | ||||
|         if (isprint(c)) printf("%c", c); else printf("[%d]", c); | ||||
|         if (isprint(d)) printf("%c", d); else printf("[%d]", d); | ||||
|         printf("\ncodec_tag=0x%04x\n", dec_ctx->codec_tag); | ||||
|         av_get_codec_tag_string(val_str, sizeof(val_str), dec_ctx->codec_tag); | ||||
|         printf("codec_tag_string=%s\n", val_str); | ||||
|         printf("codec_tag=0x%04x\n", dec_ctx->codec_tag); | ||||
|  | ||||
|         switch (dec_ctx->codec_type) { | ||||
|         case AVMEDIA_TYPE_VIDEO: | ||||
|   | ||||
| @@ -30,8 +30,8 @@ | ||||
| #include "libavutil/avutil.h" | ||||
|  | ||||
| #define LIBAVCODEC_VERSION_MAJOR 52 | ||||
| #define LIBAVCODEC_VERSION_MINOR 72 | ||||
| #define LIBAVCODEC_VERSION_MICRO  1 | ||||
| #define LIBAVCODEC_VERSION_MINOR 73 | ||||
| #define LIBAVCODEC_VERSION_MICRO  0 | ||||
|  | ||||
| #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ | ||||
|                                                LIBAVCODEC_VERSION_MINOR, \ | ||||
| @@ -3093,6 +3093,15 @@ attribute_deprecated enum PixelFormat avcodec_get_pix_fmt(const char* name); | ||||
|  */ | ||||
| unsigned int avcodec_pix_fmt_to_codec_tag(enum PixelFormat pix_fmt); | ||||
|  | ||||
| /** | ||||
|  * Puts a string representing the codec tag codec_tag in buf. | ||||
|  * | ||||
|  * @param buf_size size in bytes of buf | ||||
|  * @return the length of the string that would have been generated if | ||||
|  * enough space had been available, excluding the trailing null | ||||
|  */ | ||||
| size_t av_get_codec_tag_string(char *buf, size_t buf_size, unsigned int codec_tag); | ||||
|  | ||||
| #define FF_LOSS_RESOLUTION  0x0001 /**< loss due to resolution change */ | ||||
| #define FF_LOSS_DEPTH       0x0002 /**< loss due to color depth change */ | ||||
| #define FF_LOSS_COLORSPACE  0x0004 /**< loss due to color space conversion */ | ||||
|   | ||||
| @@ -802,6 +802,21 @@ static int get_bit_rate(AVCodecContext *ctx) | ||||
|     return bit_rate; | ||||
| } | ||||
|  | ||||
| size_t av_get_codec_tag_string(char *buf, size_t buf_size, unsigned int codec_tag) | ||||
| { | ||||
|     int i, len, ret = 0; | ||||
|  | ||||
|     for (i = 0; i < 4; i++) { | ||||
|         len = snprintf(buf, buf_size, | ||||
|                        isprint(codec_tag&0xFF) ? "%c" : "[%d]", codec_tag&0xFF); | ||||
|         buf      += len; | ||||
|         buf_size  = buf_size > len ? buf_size - len : 0; | ||||
|         ret      += len; | ||||
|         codec_tag>>=8; | ||||
|     } | ||||
|     return ret; | ||||
| } | ||||
|  | ||||
| void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode) | ||||
| { | ||||
|     const char *codec_name; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user