set user data to contain codec id
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25519 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
4c1f76cbf4
commit
fa9257456d
@ -817,7 +817,6 @@ void STSDAtom::ReadSoundDescription()
|
|||||||
Read(&aSoundDescriptionV1->desc.SampleRate);
|
Read(&aSoundDescriptionV1->desc.SampleRate);
|
||||||
|
|
||||||
if ((aSoundDescriptionV1->desc.Version == 1) && (aSoundDescriptionV1->basefields.DataFormat != AUDIO_IMA4)) {
|
if ((aSoundDescriptionV1->desc.Version == 1) && (aSoundDescriptionV1->basefields.DataFormat != AUDIO_IMA4)) {
|
||||||
printf("V1 Sound Description Found\n");
|
|
||||||
Read(&(aSoundDescriptionV1->samplesPerPacket));
|
Read(&(aSoundDescriptionV1->samplesPerPacket));
|
||||||
Read(&(aSoundDescriptionV1->bytesPerPacket));
|
Read(&(aSoundDescriptionV1->bytesPerPacket));
|
||||||
Read(&(aSoundDescriptionV1->bytesPerFrame));
|
Read(&(aSoundDescriptionV1->bytesPerFrame));
|
||||||
@ -826,14 +825,12 @@ void STSDAtom::ReadSoundDescription()
|
|||||||
} else {
|
} else {
|
||||||
// Calculate?
|
// Calculate?
|
||||||
if (aSoundDescriptionV1->basefields.DataFormat == AUDIO_IMA4) {
|
if (aSoundDescriptionV1->basefields.DataFormat == AUDIO_IMA4) {
|
||||||
printf("Calculating IMA4 Sound Description\n");
|
|
||||||
aSoundDescriptionV1->samplesPerPacket = 64;
|
aSoundDescriptionV1->samplesPerPacket = 64;
|
||||||
aSoundDescriptionV1->bytesPerFrame = aSoundDescriptionV1->desc.NoOfChannels * 34;
|
aSoundDescriptionV1->bytesPerFrame = aSoundDescriptionV1->desc.NoOfChannels * 34;
|
||||||
|
|
||||||
aSoundDescriptionV1->bytesPerSample = aSoundDescriptionV1->desc.SampleSize / 8;
|
aSoundDescriptionV1->bytesPerSample = aSoundDescriptionV1->desc.SampleSize / 8;
|
||||||
aSoundDescriptionV1->bytesPerPacket = 64 * aSoundDescriptionV1->bytesPerFrame;
|
aSoundDescriptionV1->bytesPerPacket = 64 * aSoundDescriptionV1->bytesPerFrame;
|
||||||
} else {
|
} else {
|
||||||
printf("Calculating Sound Description\n");
|
|
||||||
aSoundDescriptionV1->bytesPerSample = aSoundDescriptionV1->desc.SampleSize / 8;
|
aSoundDescriptionV1->bytesPerSample = aSoundDescriptionV1->desc.SampleSize / 8;
|
||||||
aSoundDescriptionV1->bytesPerFrame = aSoundDescriptionV1->desc.NoOfChannels * aSoundDescriptionV1->bytesPerSample;
|
aSoundDescriptionV1->bytesPerFrame = aSoundDescriptionV1->desc.NoOfChannels * aSoundDescriptionV1->bytesPerSample;
|
||||||
aSoundDescriptionV1->bytesPerPacket = aSoundDescriptionV1->desc.PacketSize;
|
aSoundDescriptionV1->bytesPerPacket = aSoundDescriptionV1->desc.PacketSize;
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
#include "mov_reader.h"
|
#include "mov_reader.h"
|
||||||
|
|
||||||
#define TRACE_MOV_READER
|
//#define TRACE_MOV_READER
|
||||||
#ifdef TRACE_MOV_READER
|
#ifdef TRACE_MOV_READER
|
||||||
#define TRACE printf
|
#define TRACE printf
|
||||||
#else
|
#else
|
||||||
@ -85,7 +85,7 @@ movReader::~movReader()
|
|||||||
const char *
|
const char *
|
||||||
movReader::Copyright()
|
movReader::Copyright()
|
||||||
{
|
{
|
||||||
return "QUICKTIME & libMOV, " B_UTF8_COPYRIGHT " by David McPaul";
|
return "mov_reader & libMOV, " B_UTF8_COPYRIGHT " by David McPaul";
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
@ -331,6 +331,12 @@ movReader::AllocateCookie(int32 streamNumber, void **_cookie)
|
|||||||
format->SetMetaData(data, size);
|
format->SetMetaData(data, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (codecID != 0) {
|
||||||
|
// Put the codeid in the user data in case someone wants it
|
||||||
|
format->user_data_type = B_CODEC_TYPE_INFO;
|
||||||
|
*(uint32 *)format->user_data = codecID; format->user_data[4] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -406,6 +412,12 @@ movReader::AllocateCookie(int32 streamNumber, void **_cookie)
|
|||||||
format->SetMetaData(data, size);
|
format->SetMetaData(data, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (codecID != 0) {
|
||||||
|
// Put the codeid in the user data in case someone wants it
|
||||||
|
format->user_data_type = B_CODEC_TYPE_INFO;
|
||||||
|
*(uint32 *)format->user_data = codecID; format->user_data[4] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1182,8 +1182,8 @@ char *WAVEAtom::OnGetAtomName()
|
|||||||
|
|
||||||
void WAVEAtom::OnOverrideAudioDescription(AudioDescription *pAudioDescription)
|
void WAVEAtom::OnOverrideAudioDescription(AudioDescription *pAudioDescription)
|
||||||
{
|
{
|
||||||
pAudioDescription->codecSubType = 'alac';
|
pAudioDescription->codecSubType = 'mp3';
|
||||||
pAudioDescription->FrameSize = 4096;
|
pAudioDescription->FrameSize = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WAVEAtom::OnOverrideVideoDescription(VideoDescription *pVideoDescription)
|
void WAVEAtom::OnOverrideVideoDescription(VideoDescription *pVideoDescription)
|
||||||
|
@ -89,7 +89,7 @@ mp4Reader::~mp4Reader()
|
|||||||
const char *
|
const char *
|
||||||
mp4Reader::Copyright()
|
mp4Reader::Copyright()
|
||||||
{
|
{
|
||||||
return "MPEG4 & libMP4, " B_UTF8_COPYRIGHT " by David McPaul";
|
return "mp4_reader & libMP4, " B_UTF8_COPYRIGHT " by David McPaul";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -143,6 +143,8 @@ mp4Reader::GetFileFormatInfo(media_file_format *mff)
|
|||||||
status_t
|
status_t
|
||||||
mp4Reader::AllocateCookie(int32 streamNumber, void **_cookie)
|
mp4Reader::AllocateCookie(int32 streamNumber, void **_cookie)
|
||||||
{
|
{
|
||||||
|
uint32 codecID = 0;
|
||||||
|
|
||||||
size_t size;
|
size_t size;
|
||||||
const void *data;
|
const void *data;
|
||||||
|
|
||||||
@ -181,6 +183,7 @@ mp4Reader::AllocateCookie(int32 streamNumber, void **_cookie)
|
|||||||
delete cookie;
|
delete cookie;
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
codecID = B_BENDIAN_TO_HOST_INT32(audio_format->compression);
|
||||||
|
|
||||||
cookie->frame_count = theFileReader->getFrameCount(cookie->stream);
|
cookie->frame_count = theFileReader->getFrameCount(cookie->stream);
|
||||||
cookie->duration = theFileReader->getAudioDuration(cookie->stream);
|
cookie->duration = theFileReader->getAudioDuration(cookie->stream);
|
||||||
@ -289,6 +292,7 @@ mp4Reader::AllocateCookie(int32 streamNumber, void **_cookie)
|
|||||||
format->u.encoded_audio.output.channel_count = audio_format->NoOfChannels;
|
format->u.encoded_audio.output.channel_count = audio_format->NoOfChannels;
|
||||||
break;
|
break;
|
||||||
case 'mp4a':
|
case 'mp4a':
|
||||||
|
codecID = B_BENDIAN_TO_HOST_INT32('aac ');
|
||||||
case 'alac':
|
case 'alac':
|
||||||
TRACE("AAC audio (mp4a) or ALAC audio\n");
|
TRACE("AAC audio (mp4a) or ALAC audio\n");
|
||||||
|
|
||||||
@ -332,10 +336,6 @@ mp4Reader::AllocateCookie(int32 streamNumber, void **_cookie)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// this doesn't seem to work (it's not even a fourcc)
|
|
||||||
format->user_data_type = B_CODEC_TYPE_INFO;
|
|
||||||
*(uint32 *)format->user_data = audio_format->compression; format->user_data[4] = 0;
|
|
||||||
|
|
||||||
// Set the DecoderConfigSize
|
// Set the DecoderConfigSize
|
||||||
size = audio_format->DecoderConfigSize;
|
size = audio_format->DecoderConfigSize;
|
||||||
data = audio_format->theDecoderConfig;
|
data = audio_format->theDecoderConfig;
|
||||||
@ -355,6 +355,12 @@ mp4Reader::AllocateCookie(int32 streamNumber, void **_cookie)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (codecID != 0) {
|
||||||
|
// Put the codeid in the user data in case someone wants it
|
||||||
|
format->user_data_type = B_CODEC_TYPE_INFO;
|
||||||
|
*(uint32 *)format->user_data = codecID; format->user_data[4] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -366,6 +372,8 @@ mp4Reader::AllocateCookie(int32 streamNumber, void **_cookie)
|
|||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
codecID = B_BENDIAN_TO_HOST_INT32(video_format->compression);
|
||||||
|
|
||||||
cookie->audio = false;
|
cookie->audio = false;
|
||||||
cookie->line_count = theFileReader->MovMainHeader()->height;
|
cookie->line_count = theFileReader->MovMainHeader()->height;
|
||||||
|
|
||||||
@ -406,9 +414,6 @@ mp4Reader::AllocateCookie(int32 streamNumber, void **_cookie)
|
|||||||
if (B_OK != formats.GetFormatFor(description, format))
|
if (B_OK != formats.GetFormatFor(description, format))
|
||||||
format->type = B_MEDIA_ENCODED_VIDEO;
|
format->type = B_MEDIA_ENCODED_VIDEO;
|
||||||
|
|
||||||
format->user_data_type = B_CODEC_TYPE_INFO;
|
|
||||||
*(uint32 *)format->user_data = description.u.quicktime.codec; format->user_data[4] = 0;
|
|
||||||
|
|
||||||
// format->u.encoded_video.max_bit_rate = 8 * theFileReader->MovMainHeader()->max_bytes_per_sec;
|
// format->u.encoded_video.max_bit_rate = 8 * theFileReader->MovMainHeader()->max_bytes_per_sec;
|
||||||
// format->u.encoded_video.avg_bit_rate = format->u.encoded_video.max_bit_rate / 2; // XXX fix this
|
// format->u.encoded_video.avg_bit_rate = format->u.encoded_video.max_bit_rate / 2; // XXX fix this
|
||||||
format->u.encoded_video.output.field_rate = cookie->frames_per_sec_rate / (float)cookie->frames_per_sec_scale;
|
format->u.encoded_video.output.field_rate = cookie->frames_per_sec_rate / (float)cookie->frames_per_sec_scale;
|
||||||
@ -471,6 +476,12 @@ mp4Reader::AllocateCookie(int32 streamNumber, void **_cookie)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (codecID != 0) {
|
||||||
|
// Put the codeid in the user data in case someone wants it
|
||||||
|
format->user_data_type = B_CODEC_TYPE_INFO;
|
||||||
|
*(uint32 *)format->user_data = codecID; format->user_data[4] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user