#include "dct.h"
#include "fdctdsp.h"
#include "internal.h"
-#include "mathops.h"
#include "mpeg12data.h"
-static inline void asv2_put_bits(PutBitContext *pb, int n, int v)
-{
- put_bits(pb, n, ff_reverse[v << (8 - n)]);
-}
-
static inline void asv1_put_level(PutBitContext *pb, int level)
{
unsigned int index = level + 3;
unsigned int index = level + 31;
if (index <= 62) {
- put_bits(pb, ff_asv2_level_tab[index][1], ff_asv2_level_tab[index][0]);
+ put_bits_le(pb, ff_asv2_level_tab[index][1], ff_asv2_level_tab[index][0]);
} else {
- put_bits(pb, 5, 0); /* Escape code */
+ put_bits_le(pb, 5, 0); /* Escape code */
if (level < -128 || level > 127) {
av_log(a->avctx, AV_LOG_WARNING, "Clipping level %d, increase qscale\n", level);
level = av_clip_int8(level);
}
- asv2_put_bits(pb, 8, level & 0xFF);
+ put_bits_le(pb, 8, level & 0xFF);
}
}
count >>= 2;
- asv2_put_bits(&a->pb, 4, count);
- asv2_put_bits(&a->pb, 8, (block[0] + 32) >> 6);
+ put_bits_le(&a->pb, 4, count);
+ put_bits_le(&a->pb, 8, (block[0] + 32) >> 6);
block[0] = 0;
for (i = 0; i <= count; i++) {
av_assert2(i || ccp < 8);
if (i)
- put_bits(&a->pb, ff_asv_ac_ccp_tab[ccp][1], ff_asv_ac_ccp_tab[ccp][0]);
+ put_bits_le(&a->pb, ff_asv_ac_ccp_tab[ccp][1], ff_asv_ac_ccp_tab[ccp][0]);
else
- put_bits(&a->pb, ff_asv_dc_ccp_tab[ccp][1], ff_asv_dc_ccp_tab[ccp][0]);
+ put_bits_le(&a->pb, ff_asv_dc_ccp_tab[ccp][1], ff_asv_dc_ccp_tab[ccp][0]);
if (ccp) {
if (ccp & 8)
{
int i;
- av_assert0(a->pb.buf_end - a->pb.buf - (put_bits_count(&a->pb) >> 3) >= MAX_MB_SIZE);
+ av_assert0(put_bytes_left(&a->pb, 0) >= MAX_MB_SIZE);
if (a->avctx->codec_id == AV_CODEC_ID_ASV1) {
for (i = 0; i < 6; i++)
}
emms_c();
- avpriv_align_put_bits(&a->pb);
- while (put_bits_count(&a->pb) & 31)
- put_bits(&a->pb, 8, 0);
-
- flush_put_bits(&a->pb);
- size = put_bits_count(&a->pb) / 32;
+ if (avctx->codec_id == AV_CODEC_ID_ASV1)
+ flush_put_bits(&a->pb);
+ else
+ flush_put_bits_le(&a->pb);
+ AV_WN32(put_bits_ptr(&a->pb), 0);
+ size = (put_bytes_output(&a->pb) + 3) / 4;
if (avctx->codec_id == AV_CODEC_ID_ASV1) {
a->bbdsp.bswap_buf((uint32_t *) pkt->data,
(uint32_t *) pkt->data, size);
- } else {
- int i;
- for (i = 0; i < 4 * size; i++)
- pkt->data[i] = ff_reverse[pkt->data[i]];
}
pkt->size = size * 4;
}
#if CONFIG_ASV1_ENCODER
-AVCodec ff_asv1_encoder = {
+const AVCodec ff_asv1_encoder = {
.name = "asv1",
.long_name = NULL_IF_CONFIG_SMALL("ASUS V1"),
.type = AVMEDIA_TYPE_VIDEO,
#endif
#if CONFIG_ASV2_ENCODER
-AVCodec ff_asv2_encoder = {
+const AVCodec ff_asv2_encoder = {
.name = "asv2",
.long_name = NULL_IF_CONFIG_SMALL("ASUS V2"),
.type = AVMEDIA_TYPE_VIDEO,