Changes between Initial Version and Version 1 of Ticket #1831


Ignore:
Timestamp:
Oct 18, 2012, 10:42:45 PM (4 years ago)
Author:
mbradshaw
Comment:

Reformatted the sample code (tabs to spaces), fixed a small typo, and set compenent to avformat.

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #1831

    • Property Component changed from undetermined to avformat
  • Ticket #1831 – Description

    initial v1  
    2121    if (!frame) 
    2222    { 
    23                 std::cout << "Error allocating the frame" << std::endl; 
     23        std::cout << "Error allocating the frame" << std::endl; 
    2424        return 1; 
    2525    } 
     
    2929    { 
    3030        av_free(frame); 
    31                 std::cout << "Error opening the file" << std::endl; 
     31        std::cout << "Error opening the file" << std::endl; 
    3232        return 1; 
    3333    } 
     
    3737        av_free(frame); 
    3838        av_close_input_file(formatContext); 
    39                 std::cout << "Error finding the stream info" << std::endl; 
     39        std::cout << "Error finding the stream info" << std::endl; 
    4040        return 1; 
    4141    } 
    4242 
    43         AVStream* audioStream = NULL; 
    44         for (unsigned int i = 0; i < formatContext->nb_streams; ++i) 
    45         { 
    46                 if (formatContext->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) 
    47                 { 
    48                         audioStream = formatContext->streams[i]; 
    49                         break; 
    50                 } 
    51         } 
     43    AVStream* audioStream = NULL; 
     44    for (unsigned int i = 0; i < formatContext->nb_streams; ++i) 
     45    { 
     46        if (formatContext->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) 
     47        { 
     48            audioStream = formatContext->streams[i]; 
     49            break; 
     50        } 
     51    } 
    5252 
    5353    if (audioStream == NULL) 
     
    5555        av_free(frame); 
    5656        av_close_input_file(formatContext); 
    57                 std::cout << "Could not find any audio stream in the file" << std::endl; 
     57        std::cout << "Could not find any audio stream in the file" << std::endl; 
    5858        return 1; 
    5959    } 
     
    6666        av_free(frame); 
    6767        av_close_input_file(formatContext); 
    68                 std::cout << "Couldn't find a proper decoder" << std::endl; 
     68        std::cout << "Couldn't find a proper decoder" << std::endl; 
    6969        return 1; 
    7070    } 
     
    7373        av_free(frame); 
    7474        av_close_input_file(formatContext); 
    75                 std::cout << "Couldn't open the context with the decoder" << std::endl; 
     75        std::cout << "Couldn't open the context with the decoder" << std::endl; 
    7676        return 1; 
    7777    } 
     
    8080    av_init_packet(&packet); 
    8181 
    82         int packetCount = 0; 
    83         int decodedFrameCount = 0; 
     82    int packetCount = 0; 
     83    int decodedFrameCount = 0; 
    8484    while (av_read_frame(formatContext, &packet) == 0) 
    8585    { 
    86                 ++packetCount; 
     86        ++packetCount; 
    8787        if (packet.stream_index == audioStream->index) 
    8888        { 
     
    9292            if (frameFinished) 
    9393            { 
    94                                 ++decodedFrameCount; 
    95                         } 
     94                ++decodedFrameCount; 
     95            } 
    9696        } 
    9797 
    98                 av_free_packet(&packet); 
     98        av_free_packet(&packet); 
    9999    } 
    100100 
    101         std::cout << "packetCount: " << packetCount << "\tdecodedFrameCount: " << decodedFrameCount << std::endl; 
    102         std::cout << "formatContext->iformat->flags: " << formatContext->iformat->flags << "\tno byte seeking: " << (formatContext->iformat->flags & AVFMT_NO_BYTE_SEEK) << std::endl; 
     101    std::cout << "packetCount: " << packetCount << "\tdecodedFrameCount: " << decodedFrameCount << std::endl; 
     102    std::cout << "formatContext->iformat->flags: " << formatContext->iformat->flags << "\tno byte seeking: " << (formatContext->iformat->flags & AVFMT_NO_BYTE_SEEK) << std::endl; 
    103103 
    104         avcodec_flush_buffers(codecContext); 
     104    avcodec_flush_buffers(codecContext); 
    105105    av_init_packet(&packet); 
    106         std::cout << "av_seek_frame() returned: " << av_seek_frame(formatContext, -1, 0, AVSEEK_FLAG_BYTE) << std::endl; 
    107          
    108         packetCount = 0; 
    109         decodedFrameCount = 0; 
     106    std::cout << "av_seek_frame() returned: " << av_seek_frame(formatContext, -1, 0, AVSEEK_FLAG_BYTE) << std::endl; 
     107     
     108    packetCount = 0; 
     109    decodedFrameCount = 0; 
    110110    while (av_read_frame(formatContext, &packet) == 0) 
    111111    { 
    112                 ++packetCount; 
     112        ++packetCount; 
    113113        if (packet.stream_index == audioStream->index) 
    114114        { 
    115                         // Try to decode the packet into a frame 
     115            // Try to decode the packet into a frame 
    116116            int frameFinished = 0; 
    117117            avcodec_decode_audio4(codecContext, frame, &frameFinished, &packet); 
     
    119119            if (frameFinished) 
    120120            { 
    121                                 ++decodedFrameCount; 
    122                         } 
     121                ++decodedFrameCount; 
     122            } 
    123123        } 
    124124 
    125                 av_free_packet(&packet); 
     125        av_free_packet(&packet); 
    126126    } 
    127127 
    128         std::cout << "packetCount: " << packetCount << "\tdecodedFrameCount: " << decodedFrameCount << std::endl; 
     128    std::cout << "packetCount: " << packetCount << "\tdecodedFrameCount: " << decodedFrameCount << std::endl; 
    129129 
    130130    av_free(frame); 
     
    150150}}} 
    151151 
    152 '''Alternative expected results:''' (if seeking really does fail) 
     152'''Alternative expected results:''' (if seeking really does fail because byte seeking is not allowed) 
    153153{{{ 
    154154packetCount: 526        decodedFrameCount: 259 
    155 formatContext->iformat->flags: 0        no byte seeking: 0 
     155formatContext->iformat->flags: 32768        no byte seeking: 32768 
    156156av_seek_frame() returned: -1 
    157157packetCount: 0        decodedFrameCount: 0