Author: spyfeng Date: Sun Aug 1 10:46:50 2010 New Revision: 5882 Log: extract common code as ff_read_header() into mms.c.
Modified: mms/mms.c mms/mms.h mms/mmsh.c mms/mmst.c Modified: mms/mms.c ============================================================================== --- mms/mms.c Sun Aug 1 10:28:01 2010 (r5881) +++ mms/mms.c Sun Aug 1 10:46:50 2010 (r5882) @@ -24,6 +24,21 @@ #include "asf.h" #include "libavutil/intreadwrite.h" +int ff_read_header(MMSContext *mms, uint8_t *buf, int size) +{ + char *pos; + int size_to_copy; + int remaining_size = mms->asf_header_size - mms->asf_header_read_size; + size_to_copy = FFMIN(size, remaining_size); + pos = mms->asf_header + mms->asf_header_read_size; + memcpy(buf, pos, size_to_copy); + if (mms->asf_header_read_size == mms->asf_header_size) { + av_freep(&mms->asf_header); // which contains asf header + } + mms->asf_header_read_size += size_to_copy; + return size_to_copy; +} + int ff_read_data(MMSContext *mms, uint8_t *buf, const int buf_size) { int read_size; Modified: mms/mms.h ============================================================================== --- mms/mms.h Sun Aug 1 10:28:01 2010 (r5881) +++ mms/mms.h Sun Aug 1 10:46:50 2010 (r5882) @@ -58,4 +58,5 @@ typedef struct { int ff_asf_header_parser(MMSContext * mms); int ff_read_data(MMSContext *mms, uint8_t *buf, const int buf_size); +int ff_read_header(MMSContext * mms, uint8_t * buf, int size); #endif Modified: mms/mmsh.c ============================================================================== --- mms/mmsh.c Sun Aug 1 10:28:01 2010 (r5881) +++ mms/mmsh.c Sun Aug 1 10:46:50 2010 (r5882) @@ -347,17 +347,7 @@ static int mmsh_read(URLContext *h, uint do{ if (mms->asf_header_read_size < mms->asf_header_size) { // copy asf header into buffer - char *pos; - int size_to_copy; - int remaining_size = mms->asf_header_size - mms->asf_header_read_size; - size_to_copy = FFMIN(size, remaining_size); - pos = mms->asf_header + mms->asf_header_read_size; - memcpy(buf, pos, size_to_copy); - mms->asf_header_read_size += size_to_copy; - res = size_to_copy; - if (mms->asf_header_read_size == mms->asf_header_size) { - av_freep(&mms->asf_header); // which contains asf header - } + res = ff_read_header(mms, buf, size); } else if (mms->remaining_in_len){ res = ff_read_data(mms, buf, size); } else { Modified: mms/mmst.c ============================================================================== --- mms/mmst.c Sun Aug 1 10:28:01 2010 (r5881) +++ mms/mmst.c Sun Aug 1 10:46:50 2010 (r5882) @@ -593,21 +593,10 @@ static int mms_read(URLContext *h, uint8 /* TODO: see tcp.c:tcp_read() about a possible timeout scheme */ MMSTContext *mmst_ctx = h->priv_data; int result = 0; - int size_to_copy; MMSContext *mms = mmst_ctx->ff_ctx; do { if(mms->asf_header_read_size < mms->asf_header_size) { - /* Read from ASF header buffer */ - size_to_copy= FFMIN(size, - mms->asf_header_size - mms->asf_header_read_size); - memcpy(buf, mms->asf_header + mms->asf_header_read_size, size_to_copy); - mms->asf_header_read_size += size_to_copy; - result += size_to_copy; - dprintf(NULL, "Copied %d bytes from stored header. left: %d\n", - size_to_copy, mms->asf_header_size - mms->asf_header_read_size); - if (mms->asf_header_size == mms->asf_header_read_size) { - av_freep(&mms->asf_header); - } + result = ff_read_header(mms, buf, size); } else if(mms->remaining_in_len) { /* Read remaining packet data to buffer. * the result can not be zero because remaining_in_len is positive.*/ _______________________________________________ FFmpeg-soc mailing list FFmpeg-soc@mplayerhq.hu https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-soc