[Ffmpeg-cvslog] r8339 - in trunk: ffmpeg.c ffserver.c libavformat/avformat.h libavformat/mpegts.c libavformat/utils.c
takis
subversion
Mon Mar 12 15:17:28 CET 2007
Author: takis
Date: Mon Mar 12 15:17:26 2007
New Revision: 8339
Modified:
trunk/ffmpeg.c
trunk/ffserver.c
trunk/libavformat/avformat.h
trunk/libavformat/mpegts.c
trunk/libavformat/utils.c
Log:
Introduce two new logging functions av_hex_dump_log() and av_pkt_dump_log()
which use av_log() for logging instead of fprintf().
Modified: trunk/ffmpeg.c
==============================================================================
--- trunk/ffmpeg.c (original)
+++ trunk/ffmpeg.c Mon Mar 12 15:17:26 2007
@@ -1878,7 +1878,7 @@ static int av_encode(AVFormatContext **o
}
if (do_pkt_dump) {
- av_pkt_dump(stdout, &pkt, do_hex_dump);
+ av_pkt_dump_log(NULL, AV_LOG_DEBUG, &pkt, do_hex_dump);
}
/* the following test is needed in case new streams appear
dynamically in stream : we ignore them */
Modified: trunk/ffserver.c
==============================================================================
--- trunk/ffserver.c (original)
+++ trunk/ffserver.c Mon Mar 12 15:17:26 2007
@@ -3347,7 +3347,7 @@ static void extract_mpeg4_header(AVForma
if (p[0] == 0x00 && p[1] == 0x00 &&
p[2] == 0x01 && p[3] == 0xb6) {
size = p - pkt.data;
- // av_hex_dump(pkt.data, size);
+ // av_hex_dump_log(infile, AV_LOG_DEBUG, pkt.data, size);
st->codec->extradata = av_malloc(size);
st->codec->extradata_size = size;
memcpy(st->codec->extradata, pkt.data, size);
Modified: trunk/libavformat/avformat.h
==============================================================================
--- trunk/libavformat/avformat.h (original)
+++ trunk/libavformat/avformat.h Mon Mar 12 15:17:26 2007
@@ -444,21 +444,51 @@ enum CodecID av_guess_codec(AVOutputForm
const char *filename, const char *mime_type, enum CodecType type);
/**
- * Print nice hexa dump of a buffer
- * @param f stream for output
+ * Send a nice hexadecimal dump of a buffer to the specified file stream.
+ *
+ * @param f The file stream pointer where the dump should be sent to.
* @param buf buffer
* @param size buffer size
+ *
+ * @see av_hex_dump_log, av_pkt_dump, av_pkt_dump_log
*/
void av_hex_dump(FILE *f, uint8_t *buf, int size);
/**
- * Print on 'f' a nice dump of a packet
- * @param f stream for output
+ * Send a nice hexadecimal dump of a buffer to the log.
+ *
+ * @param avcl A pointer to an arbitrary struct of which the first field is a
+ * pointer to an AVClass struct.
+ * @param level The importance level of the message, lower values signifying
+ * higher importance.
+ * @param buf buffer
+ * @param size buffer size
+ *
+ * @see av_hex_dump, av_pkt_dump, av_pkt_dump_log
+ */
+void av_hex_dump_log(void *avcl, int level, uint8_t *buf, int size);
+
+/**
+ * Send a nice dump of a packet to the specified file stream.
+ *
+ * @param f The file stream pointer where the dump should be sent to.
* @param pkt packet to dump
* @param dump_payload true if the payload must be displayed too
*/
void av_pkt_dump(FILE *f, AVPacket *pkt, int dump_payload);
+/**
+ * Send a nice dump of a packet to the log.
+ *
+ * @param avcl A pointer to an arbitrary struct of which the first field is a
+ * pointer to an AVClass struct.
+ * @param level The importance level of the message, lower values signifying
+ * higher importance.
+ * @param pkt packet to dump
+ * @param dump_payload true if the payload must be displayed too
+ */
+void av_pkt_dump_log(void *avcl, int level, AVPacket *pkt, int dump_payload);
+
void av_register_all(void);
/** codec tag <-> codec id */
Modified: trunk/libavformat/mpegts.c
==============================================================================
--- trunk/libavformat/mpegts.c (original)
+++ trunk/libavformat/mpegts.c Mon Mar 12 15:17:26 2007
@@ -401,7 +401,7 @@ static void pmt_cb(void *opaque, const u
#ifdef DEBUG_SI
av_log(ts->stream, AV_LOG_DEBUG, "PMT: len %i\n", section_len);
- av_hex_dump(stdout, (uint8_t *)section, section_len);
+ av_hex_dump_log(ts->stream, AV_LOG_DEBUG, (uint8_t *)section, section_len);
#endif
p_end = section + section_len - 4;
p = section;
@@ -545,7 +545,7 @@ static void pat_cb(void *opaque, const u
#ifdef DEBUG_SI
av_log(ts->stream, AV_LOG_DEBUG, "PAT:\n");
- av_hex_dump(stdout, (uint8_t *)section, section_len);
+ av_hex_dump_log(ts->stream, AV_LOG_DEBUG, (uint8_t *)section, section_len);
#endif
p_end = section + section_len - 4;
p = section;
@@ -594,7 +594,7 @@ static void pat_scan_cb(void *opaque, co
#ifdef DEBUG_SI
av_log(ts->stream, AV_LOG_DEBUG, "PAT:\n");
- av_hex_dump(stdout, (uint8_t *)section, section_len);
+ av_hex_dump_log(ts->stream, AV_LOG_DEBUG, (uint8_t *)section, section_len);
#endif
p_end = section + section_len - 4;
p = section;
@@ -655,7 +655,7 @@ static void sdt_cb(void *opaque, const u
#ifdef DEBUG_SI
av_log(ts->stream, AV_LOG_DEBUG, "SDT:\n");
- av_hex_dump(stdout, (uint8_t *)section, section_len);
+ av_hex_dump_log(ts->stream, AV_LOG_DEBUG, (uint8_t *)section, section_len);
#endif
p_end = section + section_len - 4;
@@ -806,7 +806,7 @@ static void mpegts_push_data(void *opaqu
/* we got all the PES or section header. We can now
decide */
#if 0
- av_hex_dump(pes->header, pes->data_index);
+ av_hex_dump_log(pes->stream, AV_LOG_DEBUG, pes->header, pes->data_index);
#endif
if (pes->header[0] == 0x00 && pes->header[1] == 0x00 &&
pes->header[2] == 0x01) {
Modified: trunk/libavformat/utils.c
==============================================================================
--- trunk/libavformat/utils.c (original)
+++ trunk/libavformat/utils.c Mon Mar 12 15:17:26 2007
@@ -2702,56 +2702,80 @@ int av_get_frame_filename(char *buf, int
return -1;
}
-void av_hex_dump(FILE *f, uint8_t *buf, int size)
+static void hex_dump_internal(void *avcl, FILE *f, int level, uint8_t *buf, int size)
{
int len, i, j, c;
+#define PRINT(...) do { if (!f) av_log(avcl, level, __VA_ARGS__); else fprintf(f, __VA_ARGS__); } while(0)
for(i=0;i<size;i+=16) {
len = size - i;
if (len > 16)
len = 16;
- fprintf(f, "%08x ", i);
+ PRINT("%08x ", i);
for(j=0;j<16;j++) {
if (j < len)
- fprintf(f, " %02x", buf[i+j]);
+ PRINT(" %02x", buf[i+j]);
else
- fprintf(f, " ");
+ PRINT(" ");
}
- fprintf(f, " ");
+ PRINT(" ");
for(j=0;j<len;j++) {
c = buf[i+j];
if (c < ' ' || c > '~')
c = '.';
- fprintf(f, "%c", c);
+ PRINT("%c", c);
}
- fprintf(f, "\n");
+ PRINT("\n");
}
+#undef PRINT
+}
+
+void av_hex_dump(FILE *f, uint8_t *buf, int size)
+{
+ hex_dump_internal(NULL, f, 0, buf, size);
+}
+
+void av_hex_dump_log(void *avcl, int level, uint8_t *buf, int size)
+{
+ hex_dump_internal(avcl, NULL, level, buf, size);
}
//FIXME needs to know the time_base
-void av_pkt_dump(FILE *f, AVPacket *pkt, int dump_payload)
+static void pkt_dump_internal(void *avcl, FILE *f, int level, AVPacket *pkt, int dump_payload)
{
- fprintf(f, "stream #%d:\n", pkt->stream_index);
- fprintf(f, " keyframe=%d\n", ((pkt->flags & PKT_FLAG_KEY) != 0));
- fprintf(f, " duration=%0.3f\n", (double)pkt->duration / AV_TIME_BASE);
+#define PRINT(...) do { if (!f) av_log(avcl, level, __VA_ARGS__); else fprintf(f, __VA_ARGS__); } while(0)
+ PRINT("stream #%d:\n", pkt->stream_index);
+ PRINT(" keyframe=%d\n", ((pkt->flags & PKT_FLAG_KEY) != 0));
+ PRINT(" duration=%0.3f\n", (double)pkt->duration / AV_TIME_BASE);
/* DTS is _always_ valid after av_read_frame() */
- fprintf(f, " dts=");
+ PRINT(" dts=");
if (pkt->dts == AV_NOPTS_VALUE)
- fprintf(f, "N/A");
+ PRINT("N/A");
else
- fprintf(f, "%0.3f", (double)pkt->dts / AV_TIME_BASE);
+ PRINT("%0.3f", (double)pkt->dts / AV_TIME_BASE);
/* PTS may be not known if B frames are present */
- fprintf(f, " pts=");
+ PRINT(" pts=");
if (pkt->pts == AV_NOPTS_VALUE)
- fprintf(f, "N/A");
+ PRINT("N/A");
else
- fprintf(f, "%0.3f", (double)pkt->pts / AV_TIME_BASE);
- fprintf(f, "\n");
- fprintf(f, " size=%d\n", pkt->size);
+ PRINT("%0.3f", (double)pkt->pts / AV_TIME_BASE);
+ PRINT("\n");
+ PRINT(" size=%d\n", pkt->size);
+#undef PRINT
if (dump_payload)
av_hex_dump(f, pkt->data, pkt->size);
}
+void av_pkt_dump(FILE *f, AVPacket *pkt, int dump_payload)
+{
+ pkt_dump_internal(NULL, f, 0, pkt, dump_payload);
+}
+
+void av_pkt_dump_log(void *avcl, int level, AVPacket *pkt, int dump_payload)
+{
+ pkt_dump_internal(avcl, NULL, level, pkt, dump_payload);
+}
+
void url_split(char *proto, int proto_size,
char *authorization, int authorization_size,
char *hostname, int hostname_size,
More information about the ffmpeg-cvslog
mailing list