Merge commit '4d012eb541ed7f35e00c87035a470d9f0a24a6e8'

* commit '4d012eb541ed7f35e00c87035a470d9f0a24a6e8':
  xwma: Fix wrong printf format expression.
  xwma demuxer: typos
  oggdec: simplify audio chained ogg streams support

Merged-by: Michael Niedermayer <michaelni@gmx.at>
oldabi
Michael Niedermayer 14 years ago
commit d3b379b95b
  1. 8
      libavformat/oggdec.c
  2. 1
      libavformat/oggdec.h
  3. 12
      libavformat/xwma.c

@ -164,7 +164,6 @@ ogg_new_stream (AVFormatContext * s, uint32_t serial)
os->bufsize = DECODER_BUFFER_SIZE; os->bufsize = DECODER_BUFFER_SIZE;
os->buf = av_malloc(os->bufsize); os->buf = av_malloc(os->bufsize);
os->header = -1; os->header = -1;
os->page_begin = 1;
st = av_new_stream (s, idx); st = av_new_stream (s, idx);
if (!st) if (!st)
@ -242,8 +241,7 @@ ogg_read_page (AVFormatContext * s, int *str)
idx = ogg_find_stream (ogg, serial); idx = ogg_find_stream (ogg, serial);
if (idx < 0){ if (idx < 0){
for (i = 0; i < ogg->nstreams; i++) { if (ogg->headers) {
if (!ogg->streams[i].page_begin) {
int n; int n;
for (n = 0; n < ogg->nstreams; n++) { for (n = 0; n < ogg->nstreams; n++) {
@ -252,8 +250,6 @@ ogg_read_page (AVFormatContext * s, int *str)
} }
ogg->curidx = -1; ogg->curidx = -1;
ogg->nstreams = 0; ogg->nstreams = 0;
break;
}
} }
idx = ogg_new_stream (s, serial); idx = ogg_new_stream (s, serial);
if (idx < 0) if (idx < 0)
@ -261,8 +257,6 @@ ogg_read_page (AVFormatContext * s, int *str)
} }
os = ogg->streams + idx; os = ogg->streams + idx;
if (!(flags & OGG_FLAG_BOS))
os->page_begin = 0;
os->page_pos = avio_tell(bc) - 27; os->page_pos = avio_tell(bc) - 27;
if(os->psize > 0) if(os->psize > 0)

@ -75,7 +75,6 @@ struct ogg_stream {
int incomplete; ///< whether we're expecting a continuation in the next page int incomplete; ///< whether we're expecting a continuation in the next page
int page_end; ///< current packet is the last one completed in the page int page_end; ///< current packet is the last one completed in the page
int keyframe_seek; int keyframe_seek;
int page_begin; ///< set to 1 if the stream only received a begin-of-stream packet, otherwise 0
void *private; void *private;
}; };

@ -19,6 +19,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/ */
#include <inttypes.h>
#include "avformat.h" #include "avformat.h"
#include "riff.h" #include "riff.h"
@ -90,7 +92,7 @@ static int xwma_read_header(AVFormatContext *s, AVFormatParameters *ap)
* codecs require extradata, so we provide our own fake extradata. * codecs require extradata, so we provide our own fake extradata.
* *
* First, check that there really was no extradata in the header. If * First, check that there really was no extradata in the header. If
* there was, then try to use, after asking the the user to provide a * there was, then try to use it, after asking the user to provide a
* sample of this unusual file. * sample of this unusual file.
*/ */
if (st->codec->extradata_size != 0) { if (st->codec->extradata_size != 0) {
@ -129,7 +131,7 @@ static int xwma_read_header(AVFormatContext *s, AVFormatParameters *ap)
/* Quoting the MSDN xWMA docs on the dpds chunk: "Contains the /* Quoting the MSDN xWMA docs on the dpds chunk: "Contains the
* decoded packet cumulative data size array, each element is the * decoded packet cumulative data size array, each element is the
* number of bytes accumulated after the corresponding xWMA packet * number of bytes accumulated after the corresponding xWMA packet
* is decoded in order" * is decoded in order."
* *
* Each packet has size equal to st->codec->block_align, which in * Each packet has size equal to st->codec->block_align, which in
* all cases I saw so far was always 2230. Thus, we can use the * all cases I saw so far was always 2230. Thus, we can use the
@ -144,11 +146,13 @@ static int xwma_read_header(AVFormatContext *s, AVFormatParameters *ap)
/* Compute the number of entries in the dpds chunk. */ /* Compute the number of entries in the dpds chunk. */
if (size & 3) { /* Size should be divisible by four */ if (size & 3) { /* Size should be divisible by four */
av_log(s, AV_LOG_WARNING, "dpds chunk size "PRId64" not divisible by 4\n", size); av_log(s, AV_LOG_WARNING,
"dpds chunk size %"PRId64" not divisible by 4\n", size);
} }
dpds_table_size = size / 4; dpds_table_size = size / 4;
if (dpds_table_size == 0 || dpds_table_size >= INT_MAX / 4) { if (dpds_table_size == 0 || dpds_table_size >= INT_MAX / 4) {
av_log(s, AV_LOG_ERROR, "dpds chunk size "PRId64" invalid\n", size); av_log(s, AV_LOG_ERROR,
"dpds chunk size %"PRId64" invalid\n", size);
return -1; return -1;
} }

Loading…
Cancel
Save