Ticket #6497: mediac.diff

File mediac.diff, 3.7 KB (added by Barrett, 14 years ago)

updated patch for #6497

  • src/apps/mediaconverter/MediaFileInfo.h

     
    1818
    1919struct MediaFileInfo {
    2020                MediaFileInfo(BMediaFile* file = NULL);
    21     void        LoadInfo(BMediaFile* file);
     21    status_t    LoadInfo(BMediaFile* file);
    2222
    2323    MediaInfo   audio;
    2424    MediaInfo   video;
  • src/apps/mediaconverter/MediaFileInfoView.cpp

     
    44// This file may be used under the terms of the Be Sample Code License.
    55#include "MediaFileInfoView.h"
    66
     7#include <Alert.h>
    78#include <ControlLook.h>
    89#include <MediaFile.h>
    910#include <MediaTrack.h>
     
    155156    else
    156157        fRef = entry_ref();
    157158
    158     fInfo.LoadInfo(file);
     159    status_t ret = fInfo.LoadInfo(file);
     160    if (ret != B_OK) {
     161        BString error("An error has occurred reading the "
     162            "file info.\n\nError : ");
     163        error << strerror(ret);
     164        BAlert* alert = new BAlert("File Error", error.String(),
     165            "OK");
     166        alert->Go(NULL);
     167    }
    159168
    160169    InvalidateLayout();
    161170    Invalidate();
  • src/apps/mediaconverter/MediaFileInfo.cpp

     
    1616}
    1717
    1818
    19 void
     19status_t
    2020MediaFileInfo::LoadInfo(BMediaFile* file)
    2121{
    2222    _Reset();
    2323    if (!file)
    24         return;
     24        return B_BAD_VALUE;
    2525   
    2626    BMediaTrack* track;
    2727    media_format format;
     
    3333    int32 tracks = file->CountTracks();
    3434    int64 videoFrames = 0;
    3535    int64 audioFrames = 0;
     36    status_t ret = B_OK;
     37
    3638    for (int32 i = 0; i < tracks && (!audioDone || !videoDone); i++) {
    3739        track = file->TrackAt(i);
     40        ret = track->InitCheck();
     41        if (ret != B_OK)
     42            return ret;
     43
    3844        if (track != NULL) {
    39             track->EncodedFormat(&format);
     45            ret = track->EncodedFormat(&format);
     46            if (ret != B_OK)
     47                return ret;
     48
    4049            if (format.IsVideo()) {
    4150                memset(&format, 0, sizeof(format));
    4251                format.type = B_MEDIA_RAW_VIDEO;
    43                 track->DecodedFormat(&format);
     52
     53                ret = track->DecodedFormat(&format);
     54                if (ret != B_OK)
     55                    return ret;
     56
    4457                media_raw_video_format *rvf = &(format.u.raw_video);
    4558
    46                 track->GetCodecInfo(&codecInfo);
     59                ret = track->GetCodecInfo(&codecInfo);
     60                if (ret != B_OK)
     61                    return ret;
     62
    4763                video.format << codecInfo.pretty_name;
    4864                videoDuration = track->Duration();
    4965                videoFrames = track->CountFrames();
     
    5874            } else if (format.IsAudio()) {
    5975                memset(&format, 0, sizeof(format));
    6076                format.type = B_MEDIA_RAW_AUDIO;
    61                 track->DecodedFormat(&format);
     77                ret = track->DecodedFormat(&format);
     78                if (ret != B_OK)
     79                    return ret;
     80
    6281                media_raw_audio_format *raf = &(format.u.raw_audio);
    6382                char bytesPerSample = (char)(raf->format & 0xf);
    6483                if (bytesPerSample == 1) {
     
    6988                    audio.details << bytesPerSample << "byte ";
    7089                }
    7190
    72                 track->GetCodecInfo(&codecInfo);
     91                ret = track->GetCodecInfo(&codecInfo);
     92                if (ret != B_OK)
     93                    return ret;
     94
    7395                audio.format << codecInfo.pretty_name;
    7496                audioDuration = track->Duration();
    7597                audioFrames = track->CountFrames();
     
    86108                audio.details << audioFrames << " frames";
    87109                audioDone = true;
    88110            }
    89             file->ReleaseTrack(track);
    90         }   
     111            ret = file->ReleaseTrack(track);
     112            if (ret != B_OK)
     113                return ret;
     114        }
    91115    }
    92116
    93117    useconds = MAX(audioDuration, videoDuration);
    94118    duration << (int32)(useconds / 1000000)
    95119              << " seconds";
     120
     121    return B_OK;
    96122}
    97123
    98124