yading@10: /* yading@10: * MQ-coder yading@10: * Copyright (c) 2007 Kamil Nowosad yading@10: * yading@10: * This file is part of FFmpeg. yading@10: * yading@10: * FFmpeg is free software; you can redistribute it and/or yading@10: * modify it under the terms of the GNU Lesser General Public yading@10: * License as published by the Free Software Foundation; either yading@10: * version 2.1 of the License, or (at your option) any later version. yading@10: * yading@10: * FFmpeg is distributed in the hope that it will be useful, yading@10: * but WITHOUT ANY WARRANTY; without even the implied warranty of yading@10: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU yading@10: * Lesser General Public License for more details. yading@10: * yading@10: * You should have received a copy of the GNU Lesser General Public yading@10: * License along with FFmpeg; if not, write to the Free Software yading@10: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA yading@10: */ yading@10: yading@10: #ifndef AVCODEC_MQC_H yading@10: #define AVCODEC_MQC_H yading@10: yading@10: /** yading@10: * MQ-coder yading@10: * @file yading@10: * @author Kamil Nowosad yading@10: */ yading@10: yading@10: #include "avcodec.h" yading@10: yading@10: #define MQC_CX_UNI 17 yading@10: #define MQC_CX_RL 18 yading@10: yading@10: extern uint16_t ff_mqc_qe[2*47]; yading@10: extern uint8_t ff_mqc_nlps[2*47]; yading@10: extern uint8_t ff_mqc_nmps[2*47]; yading@10: yading@10: typedef struct { yading@10: uint8_t *bp, *bpstart; yading@10: unsigned int a; yading@10: unsigned int c; yading@10: unsigned int ct; yading@10: uint8_t cx_states[19]; yading@10: } MqcState; yading@10: yading@10: /* encoder */ yading@10: yading@10: /** initialize the encoder */ yading@10: void ff_mqc_initenc(MqcState *mqc, uint8_t *bp); yading@10: yading@10: /** code bit d with context cx */ yading@10: void ff_mqc_encode(MqcState *mqc, uint8_t *cxstate, int d); yading@10: yading@10: /** number of encoded bytes */ yading@10: int ff_mqc_length(MqcState *mqc); yading@10: yading@10: /** flush the encoder [returns number of bytes encoded] */ yading@10: int ff_mqc_flush(MqcState *mqc); yading@10: yading@10: /* decoder */ yading@10: yading@10: /** initialize the decoder */ yading@10: void ff_mqc_initdec(MqcState *mqc, uint8_t *bp); yading@10: yading@10: /** returns decoded bit with context cx */ yading@10: int ff_mqc_decode(MqcState *mqc, uint8_t *cxstate); yading@10: yading@10: /* common */ yading@10: yading@10: /** initialize the contexts */ yading@10: void ff_mqc_init_contexts(MqcState *mqc); yading@10: yading@10: #endif /* AVCODEC_MQC_H */