aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/General/streambrowser/streambrowser.h
Commit message (Expand)AuthorAgeFilesLines
* fixed build with -Werror=zero-as-null-pointer-constanttrialuser022019-01-031-1/+1
* changed contact informationtrialuser022017-10-071-2/+2
* fixed FSF headerstrialuser022012-07-311-1/+1
* fixed FSF address (trunk)trialuser022012-07-311-1/+1
* added stream browser plugintrialuser022012-02-271-0/+50
9b20dd917865040b727af9b0b77e'>e231bb970
ea7b63826




2f52fee6a
ea7b63826
2d622fd9b
e231bb970
ea7b63826
e231bb970
2d622fd9b
e231bb970
2d622fd9b


e231bb970
2d622fd9b
e231bb970


2d622fd9b
e231bb970




80fc271b9
e231bb970






80fc271b9
e231bb970

2d622fd9b

928f98c35
e231bb970
2d622fd9b
e231bb970
2d622fd9b

2d622fd9b

64159334c
80fc271b9
2d622fd9b
e231bb970
2d622fd9b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
                                                                            
                                                                            
















                                                                             
 


          




                                       
                    
      
 
                                
 
                                                                                                      
 
             


                           
                                                                        
               


                              
 




                                           
 






                                                                                      
                                  

                                                                                       

                          
                 
                                                            
     
                                          

                                                     

          
                                                                                    
                                                                  
     
              
 
/***************************************************************************
 *   Copyright (C) 2009 by Ilya Kotov                                      *
 *   forkotov02@hotmail.ru                                                 *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/


extern "C"
{
#if defined HAVE_FFMPEG_AVCODEC_H
#include <ffmpeg/avcodec.h>
#elif defined HAVE_LIBAVCODEC_AVCODEC_H
#include <libavcodec/avcodec.h>
#else
#include <avcodec.h>
#endif
}
#include "ffmpegmetadatamodel.h"

FFmpegMetaDataModel::FFmpegMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent)
{
    m_in = 0;
    avcodec_init();
    avcodec_register_all();
    av_register_all();
    if (av_open_input_file(&m_in, path.toLocal8Bit(), NULL,0, NULL) < 0)
        return;
    av_find_stream_info(m_in);
    av_read_play(m_in);
}

FFmpegMetaDataModel::~FFmpegMetaDataModel()
{
    if(m_in)
        av_close_input_file(m_in);
}

QHash<QString, QString> FFmpegMetaDataModel::audioProperties()
{
    QHash<QString, QString> ap;
    if(!m_in)
        return ap;
    QString text = QString("%1").arg(int(m_in->duration/AV_TIME_BASE)/60);
    text +=":"+QString("%1").arg(int(m_in->duration/AV_TIME_BASE)%60,2,10,QChar('0'));
    ap.insert(tr("Length"), text);
    ap.insert(tr("File size"),  QString("%1 ").arg(m_in->file_size/1024)+" "+tr("KB"));
    ap.insert(tr("Bitrate"), QString("%1 "+tr("kbps")).arg(m_in->bit_rate/1000));

    AVCodecContext *c = 0;
    uint wma_idx;
    for (wma_idx = 0; wma_idx < m_in->nb_streams; wma_idx++)
    {
        c = m_in->streams[wma_idx]->codec;
        if (c->codec_type == CODEC_TYPE_AUDIO) break;
    }
    if (c)
    {
        ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg(c->sample_rate));
        ap.insert(tr("Channels"), QString("%1").arg(c->channels));
    }
    return ap;
}