Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4349 Serge 1
/*
2
 * MQ-coder: structures, common and decoder functions
3
 * Copyright (c) 2007 Kamil Nowosad
4
 *
5
 * This file is part of FFmpeg.
6
 *
7
 * FFmpeg is free software; you can redistribute it and/or
8
 * modify it under the terms of the GNU Lesser General Public
9
 * License as published by the Free Software Foundation; either
10
 * version 2.1 of the License, or (at your option) any later version.
11
 *
12
 * FFmpeg is distributed in the hope that it will be useful,
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
 * Lesser General Public License for more details.
16
 *
17
 * You should have received a copy of the GNU Lesser General Public
18
 * License along with FFmpeg; if not, write to the Free Software
19
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
 */
21
 
22
#ifndef AVCODEC_MQC_H
23
#define AVCODEC_MQC_H
24
 
25
/**
26
 * MQ-coder
27
 * @file
28
 * @author Kamil Nowosad
29
 */
30
 
31
#include 
32
 
33
#define MQC_CX_UNI 17
34
#define MQC_CX_RL  18
35
 
36
extern uint16_t ff_mqc_qe[2 * 47];
37
extern uint8_t  ff_mqc_nlps[2 * 47];
38
extern uint8_t  ff_mqc_nmps[2 * 47];
39
 
40
typedef struct MqcState {
41
    uint8_t *bp, *bpstart;
42
    unsigned int a;
43
    unsigned int c;
44
    unsigned int ct;
45
    uint8_t cx_states[19];
46
} MqcState;
47
 
48
/* encoder */
49
 
50
/** initialize the encoder */
51
void ff_mqc_initenc(MqcState *mqc, uint8_t *bp);
52
 
53
/** code bit d with context cx */
54
void ff_mqc_encode(MqcState *mqc, uint8_t *cxstate, int d);
55
 
56
/** number of encoded bytes */
57
int ff_mqc_length(MqcState *mqc);
58
 
59
/** flush the encoder [returns number of bytes encoded] */
60
int ff_mqc_flush(MqcState *mqc);
61
 
62
/* decoder */
63
 
64
/**
65
 * Initialize MQ-decoder.
66
 * @param mqc   MQ decoder state
67
 * @param bp    byte poiter
68
 */
69
void ff_mqc_initdec(MqcState *mqc, uint8_t *bp);
70
 
71
/**
72
 * MQ decoder.
73
 * @param mqc       MQ decoder state
74
 * @param cxstate   Context
75
 * @return          Decision (0 ot 1)
76
 */
77
int ff_mqc_decode(MqcState *mqc, uint8_t *cxstate);
78
 
79
/* common */
80
 
81
/**
82
 * MQ-coder Initialize context tables (QE, NLPS, NMPS)
83
 */
84
void ff_mqc_init_context_tables(void);
85
 
86
/**
87
 * MQ-coder context initialisations.
88
 * @param mqc       MQ-coder context
89
 */
90
void ff_mqc_init_contexts(MqcState *mqc);
91
 
92
#endif /* AVCODEC_MQC_H */