mirror of https://git.ffmpeg.org/ffmpeg.git
Use chunk-size in function calling mdpr_read_codecdata() rather than in the
function itself. This way, old-style (.ra4) RTSP/RDT OpaqueData chunks can be parsed using this function as well (they don't have the size bits). See discussion on ML in "[PATCH] rmdec.c - small read_mdpr_codecdata() API modification". Originally committed as revision 15163 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
2a43a093ed
commit
79d5045d33
|
@ -70,9 +70,10 @@ typedef struct {
|
||||||
* @param s context containing RMContext and ByteIOContext for stream reading
|
* @param s context containing RMContext and ByteIOContext for stream reading
|
||||||
* @param st the stream that the MDPR chunk belongs to and where to store the
|
* @param st the stream that the MDPR chunk belongs to and where to store the
|
||||||
* parameters read from the chunk into
|
* parameters read from the chunk into
|
||||||
|
* @param codec_data_size size of the MDPR chunk
|
||||||
* @return 0 on success, errno codes on error
|
* @return 0 on success, errno codes on error
|
||||||
*/
|
*/
|
||||||
int ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVStream *st);
|
int ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVStream *st, int codec_data_size);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse one rm-stream packet from the input bytestream.
|
* Parse one rm-stream packet from the input bytestream.
|
||||||
|
|
|
@ -190,14 +190,13 @@ static int rm_read_audio_stream_info(AVFormatContext *s, AVStream *st,
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVStream *st)
|
ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVStream *st, int codec_data_size)
|
||||||
{
|
{
|
||||||
ByteIOContext *pb = s->pb;
|
ByteIOContext *pb = s->pb;
|
||||||
unsigned int v;
|
unsigned int v;
|
||||||
int codec_data_size, size;
|
int size;
|
||||||
int64_t codec_pos;
|
int64_t codec_pos;
|
||||||
|
|
||||||
codec_data_size = get_be32(pb);
|
|
||||||
codec_pos = url_ftell(pb);
|
codec_pos = url_ftell(pb);
|
||||||
v = get_be32(pb);
|
v = get_be32(pb);
|
||||||
if (v == MKTAG(0xfd, 'a', 'r', '.')) {
|
if (v == MKTAG(0xfd, 'a', 'r', '.')) {
|
||||||
|
@ -351,7 +350,7 @@ static int rm_read_header(AVFormatContext *s, AVFormatParameters *ap)
|
||||||
get_str8(pb, buf, sizeof(buf)); /* mimetype */
|
get_str8(pb, buf, sizeof(buf)); /* mimetype */
|
||||||
st->codec->codec_type = CODEC_TYPE_DATA;
|
st->codec->codec_type = CODEC_TYPE_DATA;
|
||||||
av_set_pts_info(st, 64, 1, 1000);
|
av_set_pts_info(st, 64, 1, 1000);
|
||||||
if (ff_rm_read_mdpr_codecdata(s, st) < 0)
|
if (ff_rm_read_mdpr_codecdata(s, st, get_be32(pb)) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
break;
|
break;
|
||||||
case MKTAG('D', 'A', 'T', 'A'):
|
case MKTAG('D', 'A', 'T', 'A'):
|
||||||
|
|
Loading…
Reference in New Issue