libffmpegplugin.h

来自「Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3」· C头文件 代码 · 共 153 行

H
153
字号
/************************************************************************ Copyright (C) 2000-2005 Trolltech AS and its licensors.** All rights reserved.**** This file is part of the Qtopia Environment.**** This file may be distributed and/or modified under the terms of the** GNU General Public License version 2 as published by the Free Software** Foundation and appearing in the file LICENSE.GPL included in the** packaging of this file.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.**** See http://www.trolltech.com/gpl/ for GPL licensing information.** See below for additional copyright and license information**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************/#ifndef LIBFFMPEG_PLUGIN_H#define LIBFFMPEG_PLUGIN_H#include "libffmpegplugin.h"#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <pthread.h>#include <sched.h>extern "C" {#include "avcodec.h"#include "avformat.h"};#include <qlist.h>#include <qstring.h>#include <qapplication.h>#include <qtopia/mediaplayerplugininterface.h>#include "ffmutex.h"#include "mediapacket.h"#include "mediapacketbuffer.h"#include "videocodeccontext.h"#include "audiocodeccontext.h"class LibFFMpegPlugin : public MediaPlayerDecoder_1_6 {public:    LibFFMpegPlugin();    ~LibFFMpegPlugin();    const char *pluginName();    const char *pluginComment();    double pluginVersion();    bool isFileSupported( const QString& fileName );    bool open( const QString& fileName );    bool close();    bool isOpen();    const QString &fileInfo();    int audioStreams();    int audioChannels( int stream );    int audioFrequency( int stream );    int audioSamples( int stream );    bool audioSetSample( long sample, int stream );    long audioGetSample( int stream );    bool audioReadSamples( short *output, int channels, long samples, long& samplesRead, int stream );    // If decoder doesn't support video then return 0 here    int videoStreams();    int videoWidth( int stream );    int videoHeight( int stream );    double videoFrameRate( int stream );    int videoFrames( int stream );    bool videoSetFrame( long fr, int stream );    long videoGetFrame( int stream );    bool videoReadFrame( unsigned char **output_rows, int in_x, int in_y, int in_w, int in_h, ColorFormat color_model, int stream );    bool videoReadScaledFrame( unsigned char **output_rows, int in_x, int in_y, int in_w, int in_h, int out_w, int out_h, ColorFormat color_model, int stream );    bool videoReadYUVFrame( char *y_output, char *u_output, char *v_output, int in_x, int in_y, int in_w, int in_h, int stream );    // Profiling    double getTime();    // Ignore if these aren't supported    bool setSMP( int cpus );    bool setMMX( bool useMMX );    // Capabilities    bool supportsAudio();    bool supportsVideo();    bool supportsYUV();    bool supportsMMX();    bool supportsSMP();    bool supportsStereo();    bool supportsScaling();    long getPlayTime();    // 1.6 Extensions    bool supportsStreaming(); // plugin feature    bool canStreamURL( const QUrl& url, const QString& mimetype ); // Tests if the URL can be streamed    bool openURL( const QUrl& url, const QString& mimetype ); // Opens a URL for streaming    bool streamed(); // Is the open file a streamed file    bool syncAvailable();    bool sync(); // sync up the video to the catch up to the audio    bool seekAvailable(); // Availability depends on stream    bool seek( long pos ); // seek to byte    bool tellAvailable(); // Hard to imagine why this wouldn't be possible    long tell(); // byte offset from beginning    bool lengthAvailable(); // Availability depends on stream    long length(); // in bytes    bool totalTimeAvailable(); // Availability depends on stream    long totalTime(); // in milliseconds    bool currentTimeAvailable(); // Availability depends on stream    long currentTime(); // in millisecondsprivate:    FFMutex pluginMutex;    QString strInfo;    bool streamingFlag;    int fileLength;    int lengthScaleFactor;    bool haveTotalTimeCache;    long totalTimeCache;    bool needPluginInit;    long totalBitRate;    bool haveTotalBitRate;    ThreadSafeInteger savedSeekPos;    MediaPacketBuffer	packetBuffer;    VideoCodecContext	videoContext;    AudioCodecContext	audioContext;    bool init(const QString& fileName);    bool realSeek();    void flushBuffers();};#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?