initial packets are header packets that contain codec identication information. ogg can contain other types such as text. capture initial packets. remove unused #define
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5761 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -14,8 +14,6 @@
|
|||||||
#define TRACE(a...) ((void)0)
|
#define TRACE(a...) ((void)0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define OGG_BUFFER_SIZE (B_PAGE_SIZE*8)
|
|
||||||
|
|
||||||
oggReader::oggReader()
|
oggReader::oggReader()
|
||||||
{
|
{
|
||||||
TRACE("oggReader::oggReader\n");
|
TRACE("oggReader::oggReader\n");
|
||||||
@@ -138,6 +136,15 @@ oggReader::Sniff(int32 *streamCount)
|
|||||||
#endif STRICT_OGG
|
#endif STRICT_OGG
|
||||||
|
|
||||||
while (ogg_page_bos(&page) > 0) {
|
while (ogg_page_bos(&page) > 0) {
|
||||||
|
int serialno = ogg_page_serialno(&page);
|
||||||
|
ogg_stream_state * stream = &fStreams[serialno];
|
||||||
|
ogg_packet packet;
|
||||||
|
fInitialHeaderPackets[serialno] = packet;
|
||||||
|
if (ogg_stream_packetout(stream,&fInitialHeaderPackets[serialno]) != 1) {
|
||||||
|
#ifdef STRICT_OGG
|
||||||
|
return B_ERROR;
|
||||||
|
#endif STRICT_OGG
|
||||||
|
}
|
||||||
if (GetPage(&page,4096,short_page) != B_OK) {
|
if (GetPage(&page,4096,short_page) != B_OK) {
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
@@ -151,9 +158,10 @@ oggReader::GetFileFormatInfo(media_file_format *mff)
|
|||||||
{
|
{
|
||||||
TRACE("oggReader::GetFileFormatInfo\n");
|
TRACE("oggReader::GetFileFormatInfo\n");
|
||||||
mff->capabilities = media_file_format::B_READABLE
|
mff->capabilities = media_file_format::B_READABLE
|
||||||
|
| media_file_format::B_IMPERFECTLY_SEEKABLE
|
||||||
| media_file_format::B_KNOWS_ENCODED_VIDEO
|
| media_file_format::B_KNOWS_ENCODED_VIDEO
|
||||||
| media_file_format::B_KNOWS_ENCODED_AUDIO
|
| media_file_format::B_KNOWS_ENCODED_AUDIO
|
||||||
| media_file_format::B_IMPERFECTLY_SEEKABLE;
|
| media_file_format::B_KNOWS_OTHER;
|
||||||
mff->family = B_MISC_FORMAT_FAMILY;
|
mff->family = B_MISC_FORMAT_FAMILY;
|
||||||
mff->version = 100;
|
mff->version = 100;
|
||||||
strcpy(mff->mime_type, "application/ogg");
|
strcpy(mff->mime_type, "application/ogg");
|
||||||
@@ -196,13 +204,12 @@ oggReader::GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration,
|
|||||||
{
|
{
|
||||||
TRACE("oggReader::GetStreamInfo\n");
|
TRACE("oggReader::GetStreamInfo\n");
|
||||||
debugger("oggReader::GetStreamInfo");
|
debugger("oggReader::GetStreamInfo");
|
||||||
// ogg_stream_state * stream = static_cast<ogg_stream_state *>(cookie);
|
ogg_stream_state * stream = static_cast<ogg_stream_state *>(cookie);
|
||||||
memset(format, 0, sizeof(*format));
|
memset(format, 0, sizeof(*format));
|
||||||
*frameCount = -1; // don't know
|
*frameCount = -1; // don't know
|
||||||
*duration = -1; // don't know
|
*duration = -1; // don't know
|
||||||
// no info
|
*infoBuffer = (void*)fInitialHeaderPackets[stream->serialno].packet;
|
||||||
*infoBuffer = 0;
|
*infoSize = (int32)fInitialHeaderPackets[stream->serialno].bytes;
|
||||||
*infoSize = 0;
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ private:
|
|||||||
bool short_page = false);
|
bool short_page = false);
|
||||||
|
|
||||||
ogg_sync_state fSync;
|
ogg_sync_state fSync;
|
||||||
|
ogg_packet_map fInitialHeaderPackets;
|
||||||
ogg_stream_map fStreams;
|
ogg_stream_map fStreams;
|
||||||
ogg_packet_map fPackets;
|
ogg_packet_map fPackets;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user