Display codec name, some more fixes.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20316 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
François Revol 2007-03-03 16:49:51 +00:00
parent 96303159b3
commit 3a7a88e4bc
1 changed files with 39 additions and 13 deletions

View File

@ -99,10 +99,13 @@ InfoWin::InfoWin(MainWin *mainWin)
fFilenameView = new BStringView(BRect(div+10, 20,
rect.right - 10,
20 + fh.ascent + 5),
"filename", "Foo.avi");
"filename", "");
fFilenameView->SetFont(&bigFont);
fFilenameView->SetViewColor(fInfoView->ViewColor());
fFilenameView->SetLowColor(fInfoView->ViewColor());
#ifdef B_BEOS_VERSION_DANO /* maybe we should support that as well ? */
fFilenameView->SetTruncation(B_TRUNCATE_END);
#endif
AddChild(fFilenameView);
@ -158,6 +161,8 @@ InfoWin::ResizeToPreferred()
void
InfoWin::Update(uint32 which)
{
status_t err;
//char buf[256];
printf("InfoWin::Update(0x%08lx)\n", which);
rgb_color vFgCol = ui_color(B_DOCUMENT_TEXT_COLOR);
@ -186,10 +191,19 @@ InfoWin::Update(uint32 which)
media_format fmt;
media_raw_video_format vfmt;
float fps;
c->fVideoTrack->EncodedFormat(&fmt);
if (fmt.type == B_MEDIA_ENCODED_VIDEO) {
err = c->fVideoTrack->EncodedFormat(&fmt);
//string_for_format(fmt, buf, sizeof(buf));
//printf("%s\n", buf);
if (err < 0) {
s << "(" << strerror(err) << ")";
} else if (fmt.type == B_MEDIA_ENCODED_VIDEO) {
vfmt = fmt.u.encoded_video.output;
s << "(encoded video)"; // TODO: get codec
media_codec_info mci;
err = c->fVideoTrack->GetCodecInfo(&mci);
if (err < 0)
s << "(" << strerror(err) << ")";
else
s << mci.pretty_name; //<< "(" << mci.short_name << ")";
} else if (fmt.type == B_MEDIA_RAW_VIDEO) {
vfmt = fmt.u.raw_video;
s << "raw video";
@ -208,22 +222,31 @@ InfoWin::Update(uint32 which)
BString s;
media_format fmt;
media_raw_audio_format afmt;
c->fAudioTrack->EncodedFormat(&fmt);
if (fmt.type == B_MEDIA_ENCODED_AUDIO) {
err = c->fAudioTrack->EncodedFormat(&fmt);
//string_for_format(fmt, buf, sizeof(buf));
//printf("%s\n", buf);
if (err < 0) {
s << "(" << strerror(err) << ")";
} else if (fmt.type == B_MEDIA_ENCODED_AUDIO) {
afmt = fmt.u.encoded_audio.output;
s << "(encoded audio)"; // TODO: get codec
media_codec_info mci;
err = c->fAudioTrack->GetCodecInfo(&mci);
if (err < 0)
s << "(" << strerror(err) << ")";
else
s << mci.pretty_name; //<< "(" << mci.short_name << ")";
} else if (fmt.type == B_MEDIA_RAW_AUDIO) {
afmt = fmt.u.raw_audio;
s << "raw audio";
} else
s << "unknown format";
s << "\n";
// encoded has output as 1st field...
uint32 bitps = 8 * afmt.format & media_raw_audio_format::B_AUDIO_SIZE_MASK;
uint32 bitps = 8 * (afmt.format & media_raw_audio_format::B_AUDIO_SIZE_MASK);
uint32 chans = afmt.channel_count;
float sr = afmt.frame_rate;
s << bitps << "Bit ";
if (bitps)
s << bitps << " Bit ";
if (chans == 1)
s << "Mono";
else if (chans == 2)
@ -232,14 +255,15 @@ InfoWin::Update(uint32 which)
s << chans << "Channels";
s << ", ";
if (sr)
s << (1/sr);
s << sr/1000;
else
s << "?";
s<< " kHz";
s << "\n";
fContentsView->Insert(s.String());
}
if (which & INFO_STATS) {
if (which & INFO_STATS && fMainWin->fHasFile) {
// TODO: check for live streams (no duration)
fLabelsView->Insert("Duration\n");
BString s;
bigtime_t d = c->Duration();
@ -263,6 +287,7 @@ InfoWin::Update(uint32 which)
s << "." << d / 10;
s << "\n";
fContentsView->Insert(s.String());
// TODO: demux/video/audio/... perfs (Kb/s)
}
if (which & INFO_TRANSPORT) {
}
@ -276,8 +301,9 @@ InfoWin::Update(uint32 which)
fContentsView->Insert(s.String());
}
fLabelsView->Insert("Location\n");
// TODO: make Controller save the entry_ref (url actually).
fContentsView->Insert("file://\n");
fFilenameView->SetText("Bar.avi");
fFilenameView->SetText(c->fName.String());
}
if (which & INFO_COPYRIGHT && mf && mf->Copyright()) {