comparison avformat.h @ 4576:df7cc2eac54f libavformat

spelling/wording/grammar cosmetics
author diego
date Wed, 25 Feb 2009 19:10:39 +0000
parents 852e796a3604
children af7b24671b7d
comparison
equal deleted inserted replaced
4575:852e796a3604 4576:df7cc2eac54f
77 }AVMetadataTag; 77 }AVMetadataTag;
78 78
79 typedef struct AVMetadata AVMetadata; 79 typedef struct AVMetadata AVMetadata;
80 80
81 /** 81 /**
82 * gets a metadata element with matching key. 82 * Gets a metadata element with matching key.
83 * @param prev set to the previous matching element to find the next. 83 * @param prev Set to the previous matching element to find the next.
84 * @param flags allows case as well as suffix insensitive comparisons. 84 * @param flags Allows case as well as suffix-insensitive comparisons.
85 * @return found tag or NULL, changing key or value leads to undefined behavior. 85 * @return Found tag or NULL, changing key or value leads to undefined behavior.
86 */ 86 */
87 AVMetadataTag * 87 AVMetadataTag *
88 av_metadata_get(AVMetadata *m, const char *key, const AVMetadataTag *prev, int flags); 88 av_metadata_get(AVMetadata *m, const char *key, const AVMetadataTag *prev, int flags);
89 89
90 /** 90 /**
91 * sets the given tag in m, overwriting an existing tag. 91 * Sets the given tag in m, overwriting an existing tag.
92 * @param key tag key to add to m (will be av_strduped). 92 * @param key tag key to add to m (will be av_strduped)
93 * @param value tag value to add to m (will be av_strduped). 93 * @param value tag value to add to m (will be av_strduped)
94 * @return >= 0 if success otherwise error code that is <0. 94 * @return >= 0 on success otherwise an error code <0
95 */ 95 */
96 int av_metadata_set(AVMetadata **pm, const char *key, const char *value); 96 int av_metadata_set(AVMetadata **pm, const char *key, const char *value);
97 97
98 /** 98 /**
99 * Free all the memory allocated for an AVMetadata struct. 99 * Frees all the memory allocated for an AVMetadata struct.
100 */ 100 */
101 void av_metadata_free(AVMetadata **m); 101 void av_metadata_free(AVMetadata **m);
102 102
103 103
104 /* packet functions */ 104 /* packet functions */
105 105
106 typedef struct AVPacket { 106 typedef struct AVPacket {
107 /** 107 /**
108 * Presentation timestamp in time_base units. 108 * Presentation timestamp in time_base units; the time at which the
109 * This is the time at which the decompressed packet will be presented 109 * decompressed packet will be presented to the user.
110 * to the user.
111 * Can be AV_NOPTS_VALUE if it is not stored in the file. 110 * Can be AV_NOPTS_VALUE if it is not stored in the file.
112 * pts MUST be larger or equal to dts as presentation cannot happen before 111 * pts MUST be larger or equal to dts as presentation cannot happen before
113 * decompression, unless one wants to view hex dumps. Some formats misuse 112 * decompression, unless one wants to view hex dumps. Some formats misuse
114 * the terms dts and pts/cts to mean something different, these timestamps 113 * the terms dts and pts/cts to mean something different. Such timestamps
115 * must be converted to true pts/dts before they are stored in AVPacket. 114 * must be converted to true pts/dts before they are stored in AVPacket.
116 */ 115 */
117 int64_t pts; 116 int64_t pts;
118 /** 117 /**
119 * Decompression timestamp in time_base units. 118 * Decompression timestamp in time_base units; the time at which the
120 * This is the time at which the packet is decompressed. 119 * packet is decompressed.
121 * Can be AV_NOPTS_VALUE if it is not stored in the file. 120 * Can be AV_NOPTS_VALUE if it is not stored in the file.
122 */ 121 */
123 int64_t dts; 122 int64_t dts;
124 uint8_t *data; 123 uint8_t *data;
125 int size; 124 int size;
228 const char *filename; 227 const char *filename;
229 unsigned char *buf; 228 unsigned char *buf;
230 int buf_size; 229 int buf_size;
231 } AVProbeData; 230 } AVProbeData;
232 231
233 #define AVPROBE_SCORE_MAX 100 ///< Maximum score, half of that is used for file-extension-based detection. 232 #define AVPROBE_SCORE_MAX 100 ///< maximum score, half of that is used for file-extension-based detection
234 #define AVPROBE_PADDING_SIZE 32 ///< extra allocated bytes at the end of the probe buffer 233 #define AVPROBE_PADDING_SIZE 32 ///< extra allocated bytes at the end of the probe buffer
235 234
236 typedef struct AVFormatParameters { 235 typedef struct AVFormatParameters {
237 AVRational time_base; 236 AVRational time_base;
238 int sample_rate; 237 int sample_rate;
275 * to define it. 274 * to define it.
276 */ 275 */
277 const char *long_name; 276 const char *long_name;
278 const char *mime_type; 277 const char *mime_type;
279 const char *extensions; /**< comma-separated filename extensions */ 278 const char *extensions; /**< comma-separated filename extensions */
280 /** Size of private data so that it can be allocated in the wrapper. */ 279 /** size of private data so that it can be allocated in the wrapper */
281 int priv_data_size; 280 int priv_data_size;
282 /* output support */ 281 /* output support */
283 enum CodecID audio_codec; /**< default audio codec */ 282 enum CodecID audio_codec; /**< default audio codec */
284 enum CodecID video_codec; /**< default video codec */ 283 enum CodecID video_codec; /**< default video codec */
285 int (*write_header)(struct AVFormatContext *); 284 int (*write_header)(struct AVFormatContext *);
292 int (*interleave_packet)(struct AVFormatContext *, AVPacket *out, 291 int (*interleave_packet)(struct AVFormatContext *, AVPacket *out,
293 AVPacket *in, int flush); 292 AVPacket *in, int flush);
294 293
295 /** 294 /**
296 * List of supported codec_id-codec_tag pairs, ordered by "better 295 * List of supported codec_id-codec_tag pairs, ordered by "better
297 * choice first". The arrays are all CODEC_ID_NONE terminated. 296 * choice first". The arrays are all terminated by CODEC_ID_NONE.
298 */ 297 */
299 const struct AVCodecTag * const *codec_tag; 298 const struct AVCodecTag * const *codec_tag;
300 299
301 enum CodecID subtitle_codec; /**< default subtitle codec */ 300 enum CodecID subtitle_codec; /**< default subtitle codec */
302 301
313 */ 312 */
314 const char *long_name; 313 const char *long_name;
315 /** Size of private data so that it can be allocated in the wrapper. */ 314 /** Size of private data so that it can be allocated in the wrapper. */
316 int priv_data_size; 315 int priv_data_size;
317 /** 316 /**
318 * Tell if a given file has a chance of being parsed by this format. 317 * Tell if a given file has a chance of being parsed as this format.
319 * The buffer provided is guaranteed to be AVPROBE_PADDING_SIZE bytes 318 * The buffer provided is guaranteed to be AVPROBE_PADDING_SIZE bytes
320 * big so you do not have to check for that unless you need more. 319 * big so you do not have to check for that unless you need more.
321 */ 320 */
322 int (*read_probe)(AVProbeData *); 321 int (*read_probe)(AVProbeData *);
323 /** Read the format header and initialize the AVFormatContext 322 /** Read the format header and initialize the AVFormatContext
336 335
337 #if LIBAVFORMAT_VERSION_MAJOR < 53 336 #if LIBAVFORMAT_VERSION_MAJOR < 53
338 /** 337 /**
339 * Seek to a given timestamp relative to the frames in 338 * Seek to a given timestamp relative to the frames in
340 * stream component stream_index. 339 * stream component stream_index.
341 * @param stream_index must not be -1 340 * @param stream_index Must not be -1.
342 * @param flags selects which direction should be preferred if no exact 341 * @param flags Selects which direction should be preferred if no exact
343 * match is available 342 * match is available.
344 * @return >= 0 on success (but not necessarily the new offset) 343 * @return >= 0 on success (but not necessarily the new offset)
345 */ 344 */
346 int (*read_seek)(struct AVFormatContext *, 345 int (*read_seek)(struct AVFormatContext *,
347 int stream_index, int64_t timestamp, int flags); 346 int stream_index, int64_t timestamp, int flags);
348 #endif 347 #endif
416 typedef struct AVStream { 415 typedef struct AVStream {
417 int index; /**< stream index in AVFormatContext */ 416 int index; /**< stream index in AVFormatContext */
418 int id; /**< format-specific stream ID */ 417 int id; /**< format-specific stream ID */
419 AVCodecContext *codec; /**< codec context */ 418 AVCodecContext *codec; /**< codec context */
420 /** 419 /**
421 * Real base frame rate of the stream. 420 * Real base framerate of the stream.
422 * This is the lowest frame rate with which all timestamps can be 421 * This is the lowest framerate with which all timestamps can be
423 * represented accurately (it is the least common multiple of all 422 * represented accurately (it is the least common multiple of all
424 * frame rates in the stream). Note, this value is just a guess! 423 * framerates in the stream). Note, this value is just a guess!
425 * For example if the time base is 1/90000 and all frames have either 424 * For example, if the time base is 1/90000 and all frames have either
426 * approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1. 425 * approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1.
427 */ 426 */
428 AVRational r_frame_rate; 427 AVRational r_frame_rate;
429 void *priv_data; 428 void *priv_data;
430 429
434 struct AVFrac pts; 433 struct AVFrac pts;
435 434
436 /** 435 /**
437 * This is the fundamental unit of time (in seconds) in terms 436 * This is the fundamental unit of time (in seconds) in terms
438 * of which frame timestamps are represented. For fixed-fps content, 437 * of which frame timestamps are represented. For fixed-fps content,
439 * time base should be 1/frame rate and timestamp increments should be 1. 438 * time base should be 1/framerate and timestamp increments should be 1.
440 */ 439 */
441 AVRational time_base; 440 AVRational time_base;
442 int pts_wrap_bits; /**< number of bits in pts (used for wrapping control) */ 441 int pts_wrap_bits; /**< number of bits in pts (used for wrapping control) */
443 /* ffmpeg.c private use */ 442 /* ffmpeg.c private use */
444 int stream_copy; /**< If set, just copy stream. */ 443 int stream_copy; /**< If set, just copy stream. */
594 int64_t duration; 593 int64_t duration;
595 /** decoding: total file size, 0 if unknown */ 594 /** decoding: total file size, 0 if unknown */
596 int64_t file_size; 595 int64_t file_size;
597 /** Decoding: total stream bitrate in bit/s, 0 if not 596 /** Decoding: total stream bitrate in bit/s, 0 if not
598 available. Never set it directly if the file_size and the 597 available. Never set it directly if the file_size and the
599 duration are known as ffmpeg can compute it automatically. */ 598 duration are known as FFmpeg can compute it automatically. */
600 int bit_rate; 599 int bit_rate;
601 600
602 /* av_read_frame() support */ 601 /* av_read_frame() support */
603 AVStream *cur_st; 602 AVStream *cur_st;
604 #if LIBAVFORMAT_VERSION_INT < (53<<16) 603 #if LIBAVFORMAT_VERSION_INT < (53<<16)
620 #define AVFMT_INFINITEOUTPUTLOOP 0 619 #define AVFMT_INFINITEOUTPUTLOOP 0
621 /** number of times to loop output in formats that support it */ 620 /** number of times to loop output in formats that support it */
622 int loop_output; 621 int loop_output;
623 622
624 int flags; 623 int flags;
625 #define AVFMT_FLAG_GENPTS 0x0001 ///< Generate pts if missing even if it requires parsing future frames. 624 #define AVFMT_FLAG_GENPTS 0x0001 ///< Generate missing pts even if it requires parsing future frames.
626 #define AVFMT_FLAG_IGNIDX 0x0002 ///< Ignore index. 625 #define AVFMT_FLAG_IGNIDX 0x0002 ///< Ignore index.
627 #define AVFMT_FLAG_NONBLOCK 0x0004 ///< Do not block when reading packets from input. 626 #define AVFMT_FLAG_NONBLOCK 0x0004 ///< Do not block when reading packets from input.
628 627
629 int loop_input; 628 int loop_input;
630 /** Decoding: size of data to probe; encoding: unused. */ 629 /** decoding: size of data to probe; encoding: unused. */
631 unsigned int probesize; 630 unsigned int probesize;
632 631
633 /** 632 /**
634 * Maximum time (in AV_TIME_BASE units) during which the input should 633 * Maximum time (in AV_TIME_BASE units) during which the input should
635 * be analyzed in av_find_stream_info(). 634 * be analyzed in av_find_stream_info().
657 * Demuxing: Set by user. 656 * Demuxing: Set by user.
658 */ 657 */
659 enum CodecID subtitle_codec_id; 658 enum CodecID subtitle_codec_id;
660 659
661 /** 660 /**
662 * Maximum amount of memory in bytes to use per stream for the index. 661 * Maximum amount of memory in bytes to use for the index of each stream.
663 * If the needed index exceeds this size, entries will be discarded as 662 * If the index exceeds this size, entries will be discarded as
664 * needed to maintain a smaller size. This can lead to slower or less 663 * needed to maintain a smaller size. This can lead to slower or less
665 * accurate seeking (depends on demuxer). 664 * accurate seeking (depends on demuxer).
666 * Demuxers for which a full in-memory index is mandatory will ignore 665 * Demuxers for which a full in-memory index is mandatory will ignore
667 * this. 666 * this.
668 * muxing : unused 667 * muxing : unused
709 extern AVOutputFormat *first_oformat; 708 extern AVOutputFormat *first_oformat;
710 #endif 709 #endif
711 710
712 /** 711 /**
713 * If f is NULL, returns the first registered input format, 712 * If f is NULL, returns the first registered input format,
714 * if f is non-NULL, returns the next registered input format after f, 713 * if f is non-NULL, returns the next registered input format after f
715 * or NULL if f is the last one. 714 * or NULL if f is the last one.
716 */ 715 */
717 AVInputFormat *av_iformat_next(AVInputFormat *f); 716 AVInputFormat *av_iformat_next(AVInputFormat *f);
718 717
719 /** 718 /**
720 * If f is NULL, returns the first registered output format, 719 * If f is NULL, returns the first registered output format,
721 * if f is non-NULL, returns the next registered output format after f, 720 * if f is non-NULL, returns the next registered output format after f
722 * or NULL if f is the last one. 721 * or NULL if f is the last one.
723 */ 722 */
724 AVOutputFormat *av_oformat_next(AVOutputFormat *f); 723 AVOutputFormat *av_oformat_next(AVOutputFormat *f);
725 724
726 enum CodecID av_guess_image2_codec(const char *filename); 725 enum CodecID av_guess_image2_codec(const char *filename);
727 726
728 /* XXX: use automatic init with either ELF sections or C file parser */ 727 /* XXX: Use automatic init with either ELF sections or C file parser */
729 /* modules */ 728 /* modules. */
730 729
731 /* utils.c */ 730 /* utils.c */
732 void av_register_input_format(AVInputFormat *format); 731 void av_register_input_format(AVInputFormat *format);
733 void av_register_output_format(AVOutputFormat *format); 732 void av_register_output_format(AVOutputFormat *format);
734 AVOutputFormat *guess_stream_format(const char *short_name, 733 AVOutputFormat *guess_stream_format(const char *short_name,
861 AVFormatContext *avformat_alloc_context(void); 860 AVFormatContext *avformat_alloc_context(void);
862 861
863 /** 862 /**
864 * Read packets of a media file to get stream information. This 863 * Read packets of a media file to get stream information. This
865 * is useful for file formats with no headers such as MPEG. This 864 * is useful for file formats with no headers such as MPEG. This
866 * function also computes the real frame rate in case of MPEG-2 repeat 865 * function also computes the real framerate in case of MPEG-2 repeat
867 * frame mode. 866 * frame mode.
868 * The logical file position is not changed by this function; 867 * The logical file position is not changed by this function;
869 * examined packets may be buffered for later processing. 868 * examined packets may be buffered for later processing.
870 * 869 *
871 * @param ic media file handle 870 * @param ic media file handle
897 * frames if each frame has a known fixed size (e.g. PCM or ADPCM 896 * frames if each frame has a known fixed size (e.g. PCM or ADPCM
898 * data). If the audio frames have a variable size (e.g. MPEG audio), 897 * data). If the audio frames have a variable size (e.g. MPEG audio),
899 * then it contains one frame. 898 * then it contains one frame.
900 * 899 *
901 * pkt->pts, pkt->dts and pkt->duration are always set to correct 900 * pkt->pts, pkt->dts and pkt->duration are always set to correct
902 * values in AVStream.timebase units (and guessed if the format cannot 901 * values in AVStream.time_base units (and guessed if the format cannot
903 * provide them). pkt->pts can be AV_NOPTS_VALUE if the video format 902 * provide them). pkt->pts can be AV_NOPTS_VALUE if the video format
904 * has B-frames, so it is better to rely on pkt->dts if you do not 903 * has B-frames, so it is better to rely on pkt->dts if you do not
905 * decompress the payload. 904 * decompress the payload.
906 * 905 *
907 * @return 0 if OK, < 0 on error or end of file 906 * @return 0 if OK, < 0 on error or end of file
908 */ 907 */
909 int av_read_frame(AVFormatContext *s, AVPacket *pkt); 908 int av_read_frame(AVFormatContext *s, AVPacket *pkt);
910 909
911 /** 910 /**
912 * Seek to the key frame at timestamp. 911 * Seek to the keyframe at timestamp.
913 * 'timestamp' in 'stream_index'. 912 * 'timestamp' in 'stream_index'.
914 * @param stream_index If stream_index is (-1), a default 913 * @param stream_index If stream_index is (-1), a default
915 * stream is selected, and timestamp is automatically converted 914 * stream is selected, and timestamp is automatically converted
916 * from AV_TIME_BASE units to the stream specific time_base. 915 * from AV_TIME_BASE units to the stream specific time_base.
917 * @param timestamp Timestamp in AVStream.time_base units 916 * @param timestamp Timestamp in AVStream.time_base units
926 * Seek to timestamp ts. 925 * Seek to timestamp ts.
927 * Seeking will be done so that the point from which all active streams 926 * Seeking will be done so that the point from which all active streams
928 * can be presented successfully will be closest to ts and within min/max_ts. 927 * can be presented successfully will be closest to ts and within min/max_ts.
929 * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL. 928 * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL.
930 * 929 *
931 * if flags contain AVSEEK_FLAG_BYTE then all timestamps are in byte and 930 * If flags contain AVSEEK_FLAG_BYTE, then all timestamps are in bytes and
932 * are the file position (this may not be supported by all demuxers). 931 * are the file position (this may not be supported by all demuxers).
933 * if flags contain AVSEEK_FLAG_FRAME then all timestamps are in frames 932 * If flags contain AVSEEK_FLAG_FRAME, then all timestamps are in frames
934 * in the stream with stream_index (this may not be supported by all demuxers). 933 * in the stream with stream_index (this may not be supported by all demuxers).
935 * else all timestamps are in units of the stream selected by stream_index or 934 * Otherwise all timestamps are in units of the stream selected by stream_index
936 * if stream_index is -1, AV_TIME_BASE units. 935 * or if stream_index is -1, in AV_TIME_BASE units.
937 * if flags contain AVSEEK_FLAG_ANY then non keyframes are treated as 936 * If flags contain AVSEEK_FLAG_ANY, then non-keyframes are treated as
938 * keyframes (this may not be supported by all demuxers). 937 * keyframes (this may not be supported by all demuxers).
939 * 938 *
940 * @param stream_index index of the stream which is used as timebase reference. 939 * @param stream_index index of the stream which is used as time base reference
941 * @param min_ts smallest acceptable timestamp 940 * @param min_ts smallest acceptable timestamp
942 * @param ts target timestamp 941 * @param ts target timestamp
943 * @param max_ts largest acceptable timestamp 942 * @param max_ts largest acceptable timestamp
944 * @param flags flags 943 * @param flags flags
945 * @returns >=0 on success, error code otherwise 944 * @returns >=0 on success, error code otherwise
946 * 945 *
947 * @NOTE this is part of the new seek API which is still under construction 946 * @NOTE This is part of the new seek API which is still under construction.
948 * thus do not use this yet it may change any time, dont expect ABI 947 * Thus do not use this yet. It may change at any time, do not expect
949 * compatibility yet! 948 * ABI compatibility yet!
950 */ 949 */
951 int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags); 950 int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags);
952 951
953 /** 952 /**
954 * Start playing a network based stream (e.g. RTSP stream) at the 953 * Start playing a network-based stream (e.g. RTSP stream) at the
955 * current position. 954 * current position.
956 */ 955 */
957 int av_read_play(AVFormatContext *s); 956 int av_read_play(AVFormatContext *s);
958 957
959 /** 958 /**
960 * Pause a network based stream (e.g. RTSP stream). 959 * Pause a network-based stream (e.g. RTSP stream).
961 * 960 *
962 * Use av_read_play() to resume it. 961 * Use av_read_play() to resume it.
963 */ 962 */
964 int av_read_pause(AVFormatContext *s); 963 int av_read_pause(AVFormatContext *s);
965 964
1033 */ 1032 */
1034 int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags); 1033 int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags);
1035 1034
1036 /** 1035 /**
1037 * Ensures the index uses less memory than the maximum specified in 1036 * Ensures the index uses less memory than the maximum specified in
1038 * AVFormatContext.max_index_size, by discarding entries if it grows 1037 * AVFormatContext.max_index_size by discarding entries if it grows
1039 * too large. 1038 * too large.
1040 * This function is not part of the public API and should only be called 1039 * This function is not part of the public API and should only be called
1041 * by demuxers. 1040 * by demuxers.
1042 */ 1041 */
1043 void ff_reduce_index(AVFormatContext *s, int stream_index); 1042 void ff_reduce_index(AVFormatContext *s, int stream_index);
1114 1113
1115 /** 1114 /**
1116 * Writes a packet to an output media file ensuring correct interleaving. 1115 * Writes a packet to an output media file ensuring correct interleaving.
1117 * 1116 *
1118 * The packet must contain one audio or video frame. 1117 * The packet must contain one audio or video frame.
1119 * If the packets are already correctly interleaved the application should 1118 * If the packets are already correctly interleaved, the application should
1120 * call av_write_frame() instead as it is slightly faster. It is also important 1119 * call av_write_frame() instead as it is slightly faster. It is also important
1121 * to keep in mind that completely non-interleaved input will need huge amounts 1120 * to keep in mind that completely non-interleaved input will need huge amounts
1122 * of memory to interleave with this, so it is preferable to interleave at the 1121 * of memory to interleave with this, so it is preferable to interleave at the
1123 * demuxer level. 1122 * demuxer level.
1124 * 1123 *
1131 1130
1132 /** 1131 /**
1133 * Interleave a packet per dts in an output media file. 1132 * Interleave a packet per dts in an output media file.
1134 * 1133 *
1135 * Packets with pkt->destruct == av_destruct_packet will be freed inside this 1134 * Packets with pkt->destruct == av_destruct_packet will be freed inside this
1136 * function, so they cannot be used after it, note calling av_free_packet() 1135 * function, so they cannot be used after it. Note that calling av_free_packet()
1137 * on them is still safe. 1136 * on them is still safe.
1138 * 1137 *
1139 * @param s media file handle 1138 * @param s media file handle
1140 * @param out the interleaved packet will be output here 1139 * @param out the interleaved packet will be output here
1141 * @param in the input packet 1140 * @param in the input packet
1170 */ 1169 */
1171 attribute_deprecated int parse_image_size(int *width_ptr, int *height_ptr, 1170 attribute_deprecated int parse_image_size(int *width_ptr, int *height_ptr,
1172 const char *str); 1171 const char *str);
1173 1172
1174 /** 1173 /**
1175 * Converts frame rate from string to a fraction. 1174 * Converts framerate from a string to a fraction.
1176 * @deprecated Use av_parse_video_frame_rate instead. 1175 * @deprecated Use av_parse_video_frame_rate instead.
1177 */ 1176 */
1178 attribute_deprecated int parse_frame_rate(int *frame_rate, int *frame_rate_base, 1177 attribute_deprecated int parse_frame_rate(int *frame_rate, int *frame_rate_base,
1179 const char *arg); 1178 const char *arg);
1180 #endif 1179 #endif
1223 * Return 1 if found. 1222 * Return 1 if found.
1224 */ 1223 */
1225 int find_info_tag(char *arg, int arg_size, const char *tag1, const char *info); 1224 int find_info_tag(char *arg, int arg_size, const char *tag1, const char *info);
1226 1225
1227 /** 1226 /**
1228 * Returns in 'buf' the path with '%d' replaced by number. 1227 * Returns in 'buf' the path with '%d' replaced by a number.
1229 * 1228 *
1230 * Also handles the '%0nd' format where 'n' is the total number 1229 * Also handles the '%0nd' format where 'n' is the total number
1231 * of digits and '%%'. 1230 * of digits and '%%'.
1232 * 1231 *
1233 * @param buf destination buffer 1232 * @param buf destination buffer