Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
fa1923f1
Commit
fa1923f1
authored
May 22, 2015
by
Anton Khirnov
Committed by
Vittorio Giovara
May 28, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mpegvideo: Move ff_*_rl functions to a separate file
parent
419e3404
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
116 additions
and
94 deletions
+116
-94
Makefile
libavcodec/Makefile
+1
-1
mpegvideo.c
libavcodec/mpegvideo.c
+0
-92
mpegvideo.h
libavcodec/mpegvideo.h
+0
-1
rl.c
libavcodec/rl.c
+115
-0
No files found.
libavcodec/Makefile
View file @
fa1923f1
...
...
@@ -75,7 +75,7 @@ OBJS-$(CONFIG_MPEGAUDIODSP) += mpegaudiodsp.o \
mpegaudiodsp_data.o
\
mpegaudiodsp_fixed.o
\
mpegaudiodsp_float.o
OBJS-$(CONFIG_MPEGVIDEO)
+=
mpegvideo.o
mpegvideodsp.o
\
OBJS-$(CONFIG_MPEGVIDEO)
+=
mpegvideo.o
mpegvideodsp.o
rl.o
\
mpegvideo_motion.o
mpegutils.o
OBJS-$(CONFIG_MPEGVIDEOENC)
+=
mpegvideo_enc.o
mpeg12data.o
\
motion_est.o
ratecontrol.o
\
...
...
libavcodec/mpegvideo.c
View file @
fa1923f1
...
...
@@ -1521,98 +1521,6 @@ void ff_mpv_common_end(MpegEncContext *s)
s
->
linesize
=
s
->
uvlinesize
=
0
;
}
av_cold
void
ff_init_rl
(
RLTable
*
rl
,
uint8_t
static_store
[
2
][
2
*
MAX_RUN
+
MAX_LEVEL
+
3
])
{
int8_t
max_level
[
MAX_RUN
+
1
],
max_run
[
MAX_LEVEL
+
1
];
uint8_t
index_run
[
MAX_RUN
+
1
];
int
last
,
run
,
level
,
start
,
end
,
i
;
/* If table is static, we can quit if rl->max_level[0] is not NULL */
if
(
static_store
&&
rl
->
max_level
[
0
])
return
;
/* compute max_level[], max_run[] and index_run[] */
for
(
last
=
0
;
last
<
2
;
last
++
)
{
if
(
last
==
0
)
{
start
=
0
;
end
=
rl
->
last
;
}
else
{
start
=
rl
->
last
;
end
=
rl
->
n
;
}
memset
(
max_level
,
0
,
MAX_RUN
+
1
);
memset
(
max_run
,
0
,
MAX_LEVEL
+
1
);
memset
(
index_run
,
rl
->
n
,
MAX_RUN
+
1
);
for
(
i
=
start
;
i
<
end
;
i
++
)
{
run
=
rl
->
table_run
[
i
];
level
=
rl
->
table_level
[
i
];
if
(
index_run
[
run
]
==
rl
->
n
)
index_run
[
run
]
=
i
;
if
(
level
>
max_level
[
run
])
max_level
[
run
]
=
level
;
if
(
run
>
max_run
[
level
])
max_run
[
level
]
=
run
;
}
if
(
static_store
)
rl
->
max_level
[
last
]
=
static_store
[
last
];
else
rl
->
max_level
[
last
]
=
av_malloc
(
MAX_RUN
+
1
);
memcpy
(
rl
->
max_level
[
last
],
max_level
,
MAX_RUN
+
1
);
if
(
static_store
)
rl
->
max_run
[
last
]
=
static_store
[
last
]
+
MAX_RUN
+
1
;
else
rl
->
max_run
[
last
]
=
av_malloc
(
MAX_LEVEL
+
1
);
memcpy
(
rl
->
max_run
[
last
],
max_run
,
MAX_LEVEL
+
1
);
if
(
static_store
)
rl
->
index_run
[
last
]
=
static_store
[
last
]
+
MAX_RUN
+
MAX_LEVEL
+
2
;
else
rl
->
index_run
[
last
]
=
av_malloc
(
MAX_RUN
+
1
);
memcpy
(
rl
->
index_run
[
last
],
index_run
,
MAX_RUN
+
1
);
}
}
av_cold
void
ff_init_vlc_rl
(
RLTable
*
rl
)
{
int
i
,
q
;
for
(
q
=
0
;
q
<
32
;
q
++
)
{
int
qmul
=
q
*
2
;
int
qadd
=
(
q
-
1
)
|
1
;
if
(
q
==
0
)
{
qmul
=
1
;
qadd
=
0
;
}
for
(
i
=
0
;
i
<
rl
->
vlc
.
table_size
;
i
++
)
{
int
code
=
rl
->
vlc
.
table
[
i
][
0
];
int
len
=
rl
->
vlc
.
table
[
i
][
1
];
int
level
,
run
;
if
(
len
==
0
)
{
// illegal code
run
=
66
;
level
=
MAX_LEVEL
;
}
else
if
(
len
<
0
)
{
// more bits needed
run
=
0
;
level
=
code
;
}
else
{
if
(
code
==
rl
->
n
)
{
// esc
run
=
66
;
level
=
0
;
}
else
{
run
=
rl
->
table_run
[
code
]
+
1
;
level
=
rl
->
table_level
[
code
]
*
qmul
+
qadd
;
if
(
code
>=
rl
->
last
)
run
+=
192
;
}
}
rl
->
rl_vlc
[
q
][
i
].
len
=
len
;
rl
->
rl_vlc
[
q
][
i
].
level
=
level
;
rl
->
rl_vlc
[
q
][
i
].
run
=
run
;
}
}
}
static
void
release_unused_pictures
(
AVCodecContext
*
avctx
,
Picture
*
picture
)
{
int
i
;
...
...
libavcodec/mpegvideo.h
View file @
fa1923f1
...
...
@@ -47,7 +47,6 @@
#include "parser.h"
#include "mpeg12data.h"
#include "qpeldsp.h"
#include "rl.h"
#include "thread.h"
#include "videodsp.h"
...
...
libavcodec/rl.c
0 → 100644
View file @
fa1923f1
/*
* This file is part of Libav.
*
* Libav is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* Libav is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <stdint.h>
#include "libavutil/attributes.h"
#include "rl.h"
av_cold
void
ff_init_rl
(
RLTable
*
rl
,
uint8_t
static_store
[
2
][
2
*
MAX_RUN
+
MAX_LEVEL
+
3
])
{
int8_t
max_level
[
MAX_RUN
+
1
],
max_run
[
MAX_LEVEL
+
1
];
uint8_t
index_run
[
MAX_RUN
+
1
];
int
last
,
run
,
level
,
start
,
end
,
i
;
/* If table is static, we can quit if rl->max_level[0] is not NULL */
if
(
static_store
&&
rl
->
max_level
[
0
])
return
;
/* compute max_level[], max_run[] and index_run[] */
for
(
last
=
0
;
last
<
2
;
last
++
)
{
if
(
last
==
0
)
{
start
=
0
;
end
=
rl
->
last
;
}
else
{
start
=
rl
->
last
;
end
=
rl
->
n
;
}
memset
(
max_level
,
0
,
MAX_RUN
+
1
);
memset
(
max_run
,
0
,
MAX_LEVEL
+
1
);
memset
(
index_run
,
rl
->
n
,
MAX_RUN
+
1
);
for
(
i
=
start
;
i
<
end
;
i
++
)
{
run
=
rl
->
table_run
[
i
];
level
=
rl
->
table_level
[
i
];
if
(
index_run
[
run
]
==
rl
->
n
)
index_run
[
run
]
=
i
;
if
(
level
>
max_level
[
run
])
max_level
[
run
]
=
level
;
if
(
run
>
max_run
[
level
])
max_run
[
level
]
=
run
;
}
if
(
static_store
)
rl
->
max_level
[
last
]
=
static_store
[
last
];
else
rl
->
max_level
[
last
]
=
av_malloc
(
MAX_RUN
+
1
);
memcpy
(
rl
->
max_level
[
last
],
max_level
,
MAX_RUN
+
1
);
if
(
static_store
)
rl
->
max_run
[
last
]
=
static_store
[
last
]
+
MAX_RUN
+
1
;
else
rl
->
max_run
[
last
]
=
av_malloc
(
MAX_LEVEL
+
1
);
memcpy
(
rl
->
max_run
[
last
],
max_run
,
MAX_LEVEL
+
1
);
if
(
static_store
)
rl
->
index_run
[
last
]
=
static_store
[
last
]
+
MAX_RUN
+
MAX_LEVEL
+
2
;
else
rl
->
index_run
[
last
]
=
av_malloc
(
MAX_RUN
+
1
);
memcpy
(
rl
->
index_run
[
last
],
index_run
,
MAX_RUN
+
1
);
}
}
av_cold
void
ff_init_vlc_rl
(
RLTable
*
rl
)
{
int
i
,
q
;
for
(
q
=
0
;
q
<
32
;
q
++
)
{
int
qmul
=
q
*
2
;
int
qadd
=
(
q
-
1
)
|
1
;
if
(
q
==
0
)
{
qmul
=
1
;
qadd
=
0
;
}
for
(
i
=
0
;
i
<
rl
->
vlc
.
table_size
;
i
++
)
{
int
code
=
rl
->
vlc
.
table
[
i
][
0
];
int
len
=
rl
->
vlc
.
table
[
i
][
1
];
int
level
,
run
;
if
(
len
==
0
)
{
// illegal code
run
=
66
;
level
=
MAX_LEVEL
;
}
else
if
(
len
<
0
)
{
// more bits needed
run
=
0
;
level
=
code
;
}
else
{
if
(
code
==
rl
->
n
)
{
// esc
run
=
66
;
level
=
0
;
}
else
{
run
=
rl
->
table_run
[
code
]
+
1
;
level
=
rl
->
table_level
[
code
]
*
qmul
+
qadd
;
if
(
code
>=
rl
->
last
)
run
+=
192
;
}
}
rl
->
rl_vlc
[
q
][
i
].
len
=
len
;
rl
->
rl_vlc
[
q
][
i
].
level
=
level
;
rl
->
rl_vlc
[
q
][
i
].
run
=
run
;
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment