亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? simd-viterbi.3

?? Viterbi編碼解碼算法
?? 3
字號:
.TH SIMD-VITERBI 3
.SH NAME
create_viterbi27, init_viterbi27, update_viterbi27, chainback_viterbi27,
delete_viterbi27, create_viterbi29, init_viterbi29, update_viterbi29,
chainback_viterbi29, delete_viterbi29 -\ IA32 SIMD-assisted Viterbi decoders
.SH SYNOPSIS
.nf
.ft B
#include "viterbi27.h"
struct v27 *create_viterbi27(int blocklen);
int init_viterbi27(struct v27 *vp,int starting_state);
int update_viterbi27(struct v27 *vp,unsigned char sym1,unsigned char sym2);
int chainback_viterbi27(struct v27 *vp, unsigned char *data,unsigned int nbits,unsigned int endstate);
void delete_viterbi27(struct v27 *vp);
.fi
.sp
.nf
.ft B
#include "viterbi29.h"
struct v29 *create_viterbi29(int blocklen);
int init_viterbi29(struct v29 *vp,int starting_state);
int update_viterbi29(struct v29 *vp,unsigned char sym1,unsigned char sym2);
int chainback_viterbi29(struct v29 *vp, unsigned char *data,unsigned int nbits,unsigned int endstate);
void delete_viterbi29(struct v29 *vp);
.fi
.SH DESCRIPTION
These functions implement high performance Viterbi decoders for two
convolutional codes: a rate 1/2 constraint length 7 (k=7) code
("viterbi27") and a rate 1/2 k=9 code ("viterbi29"). The decoders use
the Intel IA32 SIMD instruction sets, if available, to improve
performance.

There are three different IA32 SIMD instruction sets. The most common
is MMX, first implemented on later Intel Pentiums and then on the
Intel Pentium II and most Intel clones (AMD K6, Transmeta Crusoe,
etc).  SSE was introduced on the Pentium III and later implemented in
the AMD Athlon 4 (AMD calls it "3D Now! Professional"). Most recently,
SSE2 was introduced in the Intel Pentium 4. As of mid 2001, there are
no other known implementations of SSE2.

Four separate libraries implement the decoders for four different
instruction sets. \fBlibviterbi.a\fR uses no SIMD instructions; it is
provided for source-code compatibility with non-IA32 machines.
\fBlibviterbimmx.a\fR is for IA-32 machines that support the MMX
instructions; \fBlibviterbisse.a\fR is for machines with the SSE
instructions, and \fBlibviterbisse2.a\fR is for machines with SSE2
support. The function names and calling conventions are the same for
all four versions, although the size of certain internal data
structures are different.
.SH USAGE
Two versions of each function are provided, one for the k=7 code and
another for the k=9 code. In the following discussion the k=7 code
will be assumed. To use the k=9 code, simply change all references to
"viterbi27" to "viterbi29".

Before Viterbi decoding can begin, an instance must first be created with
\fBcreate_viterbi27\fR.  This function creates an instance of
\fBstruct viterbi27\fR that contains the path metrics and the branch
decisions. \fBcreate_viterbi27\fR takes one argument that gives the
length of the data block in bits. You \fImust not\fR attempt to
decode a block longer than the length given to \fBcreate_viterbi27\fR.

After a decoder instance is created, and before decoding a new frame,
\fBinit_viterbi27\fR must be called to reset the decoder state.
It accepts the instance pointer returned by
\fBcreate_viterbi27\fR and the initial starting state of the
convolutional encoder (usually 0). If the initial starting state is unknown or
incorrect, the decoder will still function but the decoded data may be
incorrect at the start of the block.

Each pair of received symbols is processed with a call to
\fBupdate_viterbi27\fR.  Each symbol is expected to range from 0
through 15, with 0 corresponding to a "strong 0" and 15 corresponding
to a "strong 1". The caller is responsible for determining the proper
pairing of input symbols (commonly known as decoder symbol phasing).

At the end of the block, the data is recovered with a call to
\fBchainback_viterbi27\fR. The arguments are the pointer to the
decoder instance, a pointer to a user-supplied buffer into which the
decoded data is to be written, the number of data bits (not bytes)
that are to be decoded, and the terminal state of the convolutional
encoder at the end of the frame (usually 0). If the terminal state is
incorrect or unknown, the decoded data bits at the end of the frame
may be unreliable. The decoded data is written in big-endian order,
i.e., the first bit in the frame is written into the high order bit of
the first byte in the buffer. If the frame is not an integral number
of bytes long, the low order bits of the last byte in the frame will
be unused.

Note that the decoders assume the use of a tail, i.e., the encoding
and transmission of a sufficient number of padding bits beyond the end
of the user data to force the convolutional encoder into the known
terminal state given to \fBchainback_viterbi27\fR. The k=7 code
uses 6 tail bits (12 tail symbols) and the k=9 code uses 8 tail
bits (16 tail symbols).

The tail bits are not included in the length arguments to
\fBcreate_viterbi27\fR and \fBchainback_viterbi27\fR. For example, if
the block contains 1000 user bits, then this would be the length
parameter given to \fBcreate_viterbi27\fR and
\fBchainback_viterbi27\fR, and \fBupdate_viterbi27\fR would be called
a total of 1006 times - the last 6 with the 12 encoded symbols
representing the tail bits.

After the call to \fBchainback_viterbi27\fR, the decoder may be reset
with a call to \fBinit_viterbi27\fR and another block can be decoded.
Alternatively, \fBdelete_viterbi27\fR can be called to free all resources
used by the Viterbi decoder.

When the MMX and SSE versions of the decoder are used in a program
that uses floating point, you \fImust\fR insert a \fBemms\fR
instructions as needed to avoid interference with your floating point
computations. The MMX registers are only used by
\fBupdate_viterbi27\fR, so if you perform floating point between each
call to this function you should insert the emms instruction
immediately after the cal to \fBupdate_viterbi27\fR. If you perform
floating point only after the end of the frame, you may defer the
instruction until after \fBchainback_viterbi27\fR has been called.
The emms instruction can be inserted with the statement asm("emms");

The SSE2 version uses the XMM registers. These do not interfere with the
X87 floating point stack, so the emms calls are not necessary with
this version.

.SH RETURN VALUES
\fBcreate_viterbi27\fR returns a pointer to the structure containing
the decoder state. \fBupdate_viterbi27\fR returns the amount by which
the decoder path metrics were normalized in the current step. Only the
SSE and SSE2 versions perform normalization, as the C and MMX versions
use modulo arithmetic.
.SH AUTHOR
Phil Karn, KA9Q (karn@ka9q.net)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠网亚洲精品| 亚洲第一精品在线| 国产成人超碰人人澡人人澡| 日韩你懂的在线播放| 蜜臀av在线播放一区二区三区| 91精品综合久久久久久| 麻豆成人久久精品二区三区红| 欧美xxxx老人做受| 国产成人在线观看| 亚洲色图一区二区三区| 欧美性感一类影片在线播放| 日韩高清在线观看| 久久亚洲综合av| 99视频精品免费视频| 亚洲一区二区五区| 91麻豆精品国产91久久久久久| 紧缚捆绑精品一区二区| 成人欧美一区二区三区视频网页 | 日韩久久久精品| 国产在线播放一区三区四| 中文幕一区二区三区久久蜜桃| 99久久伊人精品| 亚洲福利一区二区| 国产欧美精品一区二区色综合朱莉| 色婷婷综合久久久久中文一区二区 | 久久亚洲春色中文字幕久久久| 国产高清久久久久| 亚洲精品免费播放| 日韩欧美国产综合| 一本久道中文字幕精品亚洲嫩| 日日夜夜精品视频免费| 中文字幕国产一区| 欧美久久久久久久久中文字幕| 国产高清精品在线| 日韩av在线免费观看不卡| 国产精品色在线观看| 欧美久久久久久久久| 成人动漫一区二区| 久久国产夜色精品鲁鲁99| 亚洲欧美偷拍卡通变态| 日韩欧美的一区| 欧美三级资源在线| 成人av电影在线网| 韩国成人在线视频| 午夜影院在线观看欧美| 日韩美女视频一区二区 | 国产精品久久久久永久免费观看| 欧美少妇性性性| av在线播放一区二区三区| 麻豆精品在线看| 亚洲18女电影在线观看| 中文字幕一区三区| 国产午夜亚洲精品羞羞网站| 91精品国产综合久久久久久漫画| 日韩精品在线网站| 欧美三级视频在线播放| 波多野结衣在线一区| 激情综合亚洲精品| 日韩激情一二三区| 亚洲一区二区不卡免费| 日韩美女啊v在线免费观看| 久久蜜桃一区二区| 久久欧美中文字幕| 久久久影视传媒| 精品美女在线观看| 日韩视频免费观看高清完整版在线观看| 日本久久精品电影| 日本韩国欧美一区| 欧美亚洲免费在线一区| 色悠悠亚洲一区二区| www.66久久| 99免费精品视频| 成人av资源网站| 99re这里只有精品6| 成人97人人超碰人人99| 波多野结衣精品在线| 成人黄色av网站在线| 国产91丝袜在线播放| 高清不卡一二三区| 成人av动漫在线| 色综合色综合色综合 | 国产精品资源在线看| 久久99热狠狠色一区二区| 紧缚捆绑精品一区二区| 国产精品1024| 波多野结衣中文字幕一区| 91丨九色丨尤物| 欧美日韩五月天| 欧美一区二区精品久久911| 欧美一卡二卡在线| www激情久久| 中文字幕一区二区三区精华液| 国产精品的网站| 亚洲主播在线播放| 日韩精品免费视频人成| 国模套图日韩精品一区二区| 国产91综合网| 欧美性受xxxx| 日韩精品专区在线影院重磅| 久久久无码精品亚洲日韩按摩| 日本一二三四高清不卡| 亚洲少妇屁股交4| 日日摸夜夜添夜夜添国产精品| 日韩av电影免费观看高清完整版 | 色综合咪咪久久| 51午夜精品国产| 国产日韩欧美综合在线| 亚洲人精品午夜| 日韩电影免费一区| 国产成人精品免费一区二区| 91在线观看地址| 日韩欧美电影一区| 亚洲欧洲综合另类| 日本不卡的三区四区五区| 国产风韵犹存在线视精品| 一本大道久久精品懂色aⅴ | 欧美色综合天天久久综合精品| 4hu四虎永久在线影院成人| 国产欧美一二三区| 午夜亚洲国产au精品一区二区| 国产一区二区三区免费播放| 色综合天天综合狠狠| 精品日韩一区二区三区免费视频| 国产精品美日韩| 老司机免费视频一区二区三区| 91伊人久久大香线蕉| 日韩欧美www| 亚洲影院在线观看| 国产一区二区不卡在线| 欧美日韩精品欧美日韩精品一| 国产亚洲成av人在线观看导航| 亚洲一二三专区| 成人自拍视频在线| 日韩一级二级三级精品视频| 亚洲欧美日韩在线不卡| 国内精品久久久久影院一蜜桃| 欧美在线短视频| 国产精品美女一区二区在线观看| 麻豆免费精品视频| 欧美日韩高清一区二区不卡| 国产日韩欧美电影| 男男gaygay亚洲| 欧美视频在线观看一区| 成人欧美一区二区三区在线播放| 国产一区二区三区四区五区入口| 欧美视频在线观看一区二区| 亚洲欧美日韩中文播放| 风间由美一区二区av101| 夜夜嗨av一区二区三区四季av| 国产精品66部| 久久这里只精品最新地址| 蜜桃视频在线观看一区| 欧美体内she精高潮| 有码一区二区三区| 99精品视频在线观看| 中文字幕欧美区| 国产精品自拍网站| 久久久久国产免费免费| 国产一区在线看| 精品国产乱子伦一区| 日本aⅴ免费视频一区二区三区 | 精品一区二区影视| 在线播放一区二区三区| 婷婷综合五月天| 欧美午夜理伦三级在线观看| 亚洲欧美日韩在线不卡| 色综合久久久久久久| 亚洲另类在线一区| 91免费观看视频| 亚洲蜜臀av乱码久久精品蜜桃| 91一区一区三区| 亚洲美女视频在线观看| 色哟哟精品一区| 亚洲国产中文字幕| 欧美巨大另类极品videosbest | av电影天堂一区二区在线| 国产农村妇女毛片精品久久麻豆| 国产在线精品一区二区夜色| 欧美精品一区二区三区高清aⅴ| 美国十次了思思久久精品导航| 日韩视频在线观看一区二区| 老司机精品视频线观看86| 精品国产3级a| 成人听书哪个软件好| 国产精品欧美久久久久无广告 | 国产欧美日韩在线| 不卡的看片网站| 亚洲一区二区三区不卡国产欧美 | 成人av中文字幕| 亚洲欧美日韩国产综合| 欧美视频中文字幕| 久久99久久99| 国产精品国产三级国产aⅴ入口 | 欧美日韩国产电影| 亚洲免费在线观看视频| 欧美午夜精品电影| 久久机这里只有精品| 国产精品卡一卡二卡三| 欧美性大战久久久久久久蜜臀| 美女视频黄免费的久久|