summaryrefslogtreecommitdiffstats
path: root/core/Manager.h
blob: dc885e5f501306742162fa5e19eeb793d16584bf (plain)
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
/* $Id: Manager.h,v 1.32 2003/10/08 22:20:36 titer Exp $

   This file is part of the HandBrake source code.
   Homepage: <http://beos.titer.org/handbrake/>.
   It may be used under the terms of the GNU General Public License. */

#ifndef HB_MANAGER_H
#define HB_MANAGER_H

#include "Common.h"
#include "Thread.h"

class HBManager : public HBThread
{
    public:
                      HBManager( bool debug = false,
                                 int cpuCount = 0 );
                      ~HBManager();
        void          DoWork();

        /* Methods called by the interface */
        bool          NeedUpdate();
        HBStatus      GetStatus();
        void          ScanVolumes( char * device );
        void          StartRip( HBTitle * title, HBAudio * audio1,
                                HBAudio * audio2, char * file );
        void          SuspendRip();
        void          ResumeRip();
        void          StopRip();
        uint8_t     * GetPreview( HBTitle * title, uint32_t image );

        /* Methods called by the working threads */
        void          Scanning( char * volume, int title );
        void          ScanDone( HBList * titleList );
        void          Done();
        void          Error( HBError error );
        void          SetPosition( float pos );

    private:
        void          FixPictureSettings( HBTitle * title );

        int           fPid;
        int           fCPUCount;

        /* Booleans used in DoWork() */
        bool          fStopScan;
        volatile bool fStopRip;
        bool          fRipDone;
        bool          fError;

        /* Scanner thread */
        HBScanner   * fScanner;

        /* Status infos */
        HBLock      * fStatusLock;
        bool          fNeedUpdate;
        HBStatus      fStatus;

        HBTitle     * fCurTitle;
        HBAudio     * fCurAudio1;
        HBAudio     * fCurAudio2;
};

#endif