陶土色是什么颜色| 一惊一乍是什么意思| 热伤风感冒吃什么药好| 叶黄素对眼睛有什么功效| 蚂蚁代表什么风水| 右眼皮跳有什么预兆| 2012属什么生肖| 什么是欲望| 什么样的人容易得脑瘤| 微量泵是干什么用的| 健忘是什么意思| 10月29号是什么星座| 娅字五行属什么| 腿毛有什么用| 深明大义是什么意思| 维生素b族什么时候吃| 补血吃什么食物最好| 了加一笔是什么字| 衣带渐宽终不悔是什么意思| 猫舔人是什么意思| 为什么声音老是嘶哑| loho眼镜属于什么档次| 什么样的人容易得甲减| 免疫力差吃什么可以增强抵抗力| 肝功能谷丙转氨酶偏高是什么原因| 晚的反义词是什么| 棉花是什么时候传入中国的| 什么东西可以代替阴茎| 阳历是什么| 报价是什么意思| 儿茶是什么中药| 1.29是什么星座| 6.25什么星座| 韦编三绝是什么意思| 天山童姥练的什么武功| 儿童脾胃不好吃什么调理脾胃| 元神是什么意思| 关羽使用的武器是什么| 小便黄是什么原因引起的| 925银和s925银有什么区别| 血糖高饮食需要注意什么| 仟字五行属什么| 手忙脚乱是什么意思| 小河虾吃什么| 过敏性紫癜是什么原因引起的| 普乐安片治什么病| 肾结石要注意些什么| 怀孕日期是从什么时候开始算| 为什么肚子疼| cache是什么意思| 馐什么意思| 朱砂有什么功效| 买手店是什么意思| 什么叫原发性高血压| 狗狗打疫苗前后要注意什么| 正畸是什么意思| 检查脂肪肝做什么检查| 香港脚是什么意思| 脾切除对身体有什么影响| 琼花是什么意思| 关门弟子是什么意思| 红茶有什么功效| 什么有什么| 汲水什么意思| 小孩体检挂什么科| 黑眼圈严重是什么原因| o型血阳性是什么意思| 四月天是什么意思| 女人鼻子大代表什么| 面碱是什么| aosc医学是什么意思| 吃饱就犯困是什么原因| 小拇指长痣代表什么| 天山翠属于什么玉| 为什么会得脑梗| 亏空是什么意思| 雏形是什么意思| 生不如死是什么生肖| 什么是嗳气有何症状| 做梦梦见屎是什么意思| 什么蔬菜不能放冰箱| 擎天柱是什么车| hps是什么意思| 梦见自己穿孝衣有什么征兆| 10月7日是什么星座| 双角子宫是什么意思| 喜上眉梢是什么意思| 虾吃什么| 女生为什么会肾虚| 甘露是什么| 提高免疫力吃什么药| 厨房墙砖什么颜色好看| dw是什么牌子的手表| 神龙摆尾什么意思| 什么叫桑拿| 什么好像什么造句| 八字加一笔是什么字| 小狗得细小是什么症状| 胃酸过多吃点什么食物比较好| 00后属什么| 血小板低有什么危险| 多吃香蕉有什么好处和坏处| 车间管理人员工资计入什么科目| 高铁上不能带什么东西| cm是什么| 病理会诊是什么意思| 副区长是什么级别| 图灵是什么意思| 防风通圣颗粒治什么病| 肺ca是什么病| 贵州有什么烟| 一个西一个米念什么| 妄想症吃什么药| 六神无主是什么意思| 处暑的处是什么意思| 3.21什么星座| 固体饮料是什么意思| 包皮红肿瘙痒用什么药| 烫发对身体有什么危害| tap什么意思| cdts什么意思| 三七粉适合什么人群喝| 鳕鱼是什么鱼| 维生素b有什么用| les是什么意思| 颈动脉彩超挂什么科| 看见蝙蝠有什么预兆| 红领巾的含义是什么| 芝麻开花节节高是什么意思| 梦见别人给自己剪头发是什么意思| pending是什么意思啊| 经常胃疼是什么原因| 淤泥是什么意思| 游坦之练的什么武功| 口牙是什么意思| 生姜能治什么病| 牙神经痛吃什么药| 八七年属什么生肖| 慢性胆囊炎是什么原因引起的| ol是什么| 左束支传导阻滞是什么意思| 煮肉放什么调料| e m s是什么快递| 高血压是什么引起的| 福州有什么好吃的| 紧急避孕药什么时候吃有效| 小孩满月送什么礼物好| 自锁是什么意思| timing是什么意思| 水仙什么意思| 化验大便能查出什么病| 压抑什么意思| 鲨鱼怕什么| 吃了山竹不能吃什么| hpv病毒通过什么途径传播| 属马本命佛是什么佛| 爱马仕为什么要配货| 吃什么养胃| 白带发黄有异味是什么原因| 乌龟死了有什么预兆| 什么的肥料| 女真人是什么民族| 使节是什么意思| 86年属什么的| 经警是做什么的| 吃什么可以增加抵抗力和免疫力| 什么专业好找工作| 荣辱与共是什么意思| 长的像蛇的鱼是什么鱼| 为什么前壁容易生男孩| 得了便宜还卖乖是什么意思| 六月26日是什么日子| 住院需要带什么生活用品| 鸡冲什么生肖| 华西医院院长什么级别| 奥地利讲什么语言| 启明星是什么意思| 木加炎念什么| 孕妇梦见鬼是什么预兆| 爱出油的人身体缺什么| 晚黄瓜什么时候种| 龙和什么属相相克| 指甲长的快是什么原因| 总胆红素偏高吃什么药| 有小肚子是什么原因| 什么好| 伏案工作是什么意思| 尿分叉是什么原因| 射线是什么| 什么汗滴| 凯旋归来是什么意思| 九个月宝宝吃什么辅食| 睡觉起来眼皮肿是什么原因| 卡布奇诺是什么意思| 深闺是什么意思| 橄榄油什么牌子最好| 全员加速中什么时候播| x代表什么意思| 嗓子嘶哑吃什么药| rh血型阳性什么意思| 小孩容易出汗是什么原因| 上眼皮浮肿是什么原因| 发票抬头是什么| 指甲凹陷是什么原因引起的| 东莞市委书记什么级别| 天天喝绿茶有什么好处和坏处| 脚底发麻是什么原因| 强的松是什么药| 生完孩子可以吃什么水果| 特警是干什么的| ul是什么单位| 肾不好吃什么药| 肛瘘是什么| 腊猪脚炖什么好吃| 逆行是什么意思| 男人血精是什么原因造成的| 分化是什么意思| 9月24日什么星座| 蜂蜜可以做什么美食| cbd是什么意思啊| 斜视手术有什么后遗症和风险| 大宗物品是什么意思| 蝙蝠是什么动物| 属牛和什么属相相冲| 腋下大量出汗是什么原因| 老公什么意思| 梦见杀人是什么意思| 01年是什么年| NPY什么意思| 什么是爱国| 双肺钙化灶是什么意思| 虎口是什么穴位| 藏红花能治什么病| sds是什么| 2009年五行属什么| 尿酸高是什么问题| 水中毒是什么| 小孩白头发是什么原因引起的| 环球中心有什么好玩的| 考生号是什么| 生气吃什么药可以顺气| 牙齿为什么会松动| 太形象了是什么意思| 高甘油三酯血症是什么意思| 吃猪肝有什么好处和坏处| 桂花像什么| mask是什么意思| 二氧化碳是什么气体| 嘴角上方有痣代表什么| 打喷嚏头疼是什么原因| 伏天是什么意思| 克拉是什么意思| 孕妇肠胃炎能吃什么药| 栀子花什么时候开| 正负得什么| 你什么都没看见| 山药跟淮山有什么区别| 自由奔放是什么生肖| 长针眼是什么原因| 喝酒伤什么| cook是什么意思| 南京有什么特产| 血糖高看什么科| psc是什么病| 百度
|
|
Subscribe / Log in / New account

始终把人民放在心中最高位置

Developing the Opus and Daala codecs

By Nathan Willis
October 30, 2013

GStreamer Conference
百度 中国还在扩充海军实力,继续对抗世界最强的美国海军。

At the 2013 GStreamer Conference in Edinburgh, Greg Maxwell from Xiph.org spoke about the creation of the Opus audio codec, and how that experience has informed the subsequent development process behind the Daala video codec. Maxwell, who is employed by Mozilla to work on multimedia codecs, highlighted in particular how working entirely in the open gives the project significant advantages over codecs created behind closed doors. Daala is still in flux, he said, but it has the potential to equal the impact that Opus has had on the audio encoding world.

Approaching the battlefield

Mozilla's support for Xiph.org's codec development comes as a surprise to some, Maxwell said, but it makes sense in light of Mozilla's concern for the evolution of the web. As multimedia codecs become more important to the web, they become more important to Mozilla. And they are important, he said: codecs are used by all multimedia applications, so every cost associated with them (such as royalties or license fees) are repeated a million-fold. On your person right now, he told the audience, "you carry with you four or five licenses for AACS." Codec licensing amounts to a billion-dollar tax on communication software. In addition, it is used as a weapon between battling competitors, so it even affects people in countries without software patents.

[Maxwell]

Moreover, codec licensing is inherently discriminatory. Many come with user caps, so that an application with certain number of users does not need to pay a fee—but many open source projects cannot even afford the cost of counting their users (if they are technically able to do so), much less handle a fee imposed suddenly if the limit is exceeded. In addition, he said, simply ignoring codec licensing (as some open source projects do) creates a risk of its own: license fees or lawsuits that can appear at any time, and usually only when the codec licensor decides the project is successful enough to become a target.

"So here you have the codec guy here saying that the way to solve all this is with another codec," Maxwell joked. Nevertheless, he said, Xiph does believe it can change the game with its efforts. Creating good codecs is hard, but we don't really need that many. It is "weird competitive pressures" that led to the current state of affairs where there are so many codecs to choose from at once. High-quality free codecs can change that. The success of the internet shows that innovation happens when people don't have to ask permission or forgiveness. History also shows us that the best implementations of the patented codecs are usually the free software ones, he said, and it shows that where a royalty-free format is established, non-free codecs see no adoption. Consider JPEG, he said: there are patent-encumbered, proprietary image formats out there, like MrSID, "but who here has even heard of MrSID?" he asked the audience.

Unfortunately, he said, not everyone cares about the same issues; convincing the broader technology industry to get behind a free codec requires that the codec not just be better in one or two ways, but that it be better in almost every way.

Opus day

The goal of being better at everything drove the development of the Opus codec. Opus is "designed for the Internet," he said, not just designed for one specific application. It mixes old and new technologies, but its most interesting feature is its extreme flexibility. Originally, there were two flavors of audio codec, Maxwell said, the speech codecs optimized for low-delay and limited bandwidth, and the music codecs designed for delay-insensitive playback and lots of bandwidth.

But everyone really wants the benefits of all of those features together, and "we can now afford the best of both worlds." Opus represents the merger between work done by Xiph.org, Skype (now owned by Microsoft), Broadcom, and Mozilla, he said. It was developed in the open and published as IETF RFC 6716 in 2012. By tossing out many of the old design decisions and building flexibility into the codec itself, the Opus team created something that can adapt dynamically to any use case. He showed a chart listing the numerous codec choices of 2010: VoIP over the telephone network could use AMR-NB or Speex, wideband VoIP could use AMR-WB or Speex, low-bitrate music streaming could use He-AAC or Vorbis, low-delay broadcast could use AAC-LD, and so on. In the 2012 chart that followed, Opus fills every slot.

Maxwell briefly talked about the design of Opus itself. It supports bit-rates from 6 to 510 kbps, frequency bands from 8 to 48 kHz, and frame sizes from 2.5ms to 60ms. Just as importantly, however, all of these properties can be dynamically changed within the audio stream itself (unlike older codecs), with very fine control. The codec merges two audio compression schemes: Skype's SILK codec, which was designed for speech, and Xiph.org's CELT, which was designed for low-delay audio. Opus is also "structured so that it is hard to implement wrong," he said. Its acoustic model is actually part of its design, rather than something that has to be considered by the application doing the encoding. The development process was iterative with many public releases, and employed massive automated testing totaling hundreds of thousands of hours. Among other things, Skype was able to test Opus by rolling it into its closed-source application releases, but the Mumble open source chat application was used as a testbed, too.

He then showed the results of several tests, run by separately by Google and HydrogenAudio over a wide variety of samples; Opus tests better than all of the others in virtually every test. Its quality has meant rapid adoption; it is already supported in millions of hardware devices and it is mandatory to implement for WebRTC. The codec is available under a royalty-free license, he said, but one that has a protective clause: the right to use Opus is revoked if one engages in any Opus-related patent litigation against any Opus user.

One down, one to go...

Moving on to video, Maxwell then looked briefly at the royalty-free video codecs available. Xiph.org created Theora in 1999/2000, he said, which was good at the time, but "there's only so far you can get by putting rockets on a pig." Google's VP8 is noticeably better than the encumbered H.264 Baseline Profile codec, but even at its release time the industry was raising the bar to H.264's High Profile. VP9 is better than H.264, he said, but it shares the same basic architecture—which is a problem all of its own. Even when a free codec does not infringe on an encumbered codec's patents, he said, using the same architecture makes it vulnerable to FUD, which can impede adoption. VP9 is also a single-vendor product, which makes some people uncomfortable regardless of the license.

"So let's take the strategy we used for Opus and apply it to video," Maxwell said. That means working in public—with a recognized standards body that has a strong intellectual property (IP) disclosure policy, questioning the assumptions of older codec designs, and targeting use cases where flexibility is key. The project also decided to optimize for perceptual quality, he said, which differs from efforts like H.264 that measure success with metrics like peak signal-to-noise ratio (PSNR). A metrics-based approach lets companies push to get their own IP included in the standard, he said; companies have a vested interest in getting their patents into the standard so that they are not left out of the royalty payments.

Daala is the resulting codec effort. It is currently very much a pre-release project—in the audience Q&A portion of the session, Maxwell that they were aiming for a 2015 release date, but the work has already made significant progress. The proprietary High Efficiency Video Coding (HEVC) codec (the direct successor to H.264) is the primary area of industry interest now; it has already been published as a stand-alone ISO/ITU standard, although has not yet made it into web standards or other such playing fields. Daala is targeting the as-yet unfinished generation of codecs that would come after HEVC.

He listed several factors that differentiate Daala from HEVC and the H.264 family of codecs: multisymbol arithmetic coding, lapped transforms, frequency-domain intra-prediction, pyramid vector quantization, Chroma from Luma, and overlapping-block motion compensation (OBMC). Thankfully, he then took the time to explain the differences; first providing a brief look at lossy video compression in general, then describing how Daala takes new approaches at the various steps.

Video compression has four basic stages, he said: prediction, or examining the content to make predictions about the next data frame, transformation, or rearranging the data to make it more compressible, quantization, or computing the difference between the prediction and the data (and also throwing out unnecessary detail), and entropy coding, or replacing the quantized error signal with something that can be more efficiently packed.

The entropy-coding step is historically done with arithmetic coding, he said, but most of the efficient ways to do arithmetic coding are patented, so the team looked into non-binary multisymbol range coding instead. As it turns out, using non-binary coding has some major benefits, such as the fact that it is inherently parallel, while arithmetic coding is inherently serial (and thus slow on embedded hardware). Simply plugging multisymbol coding into VP8 doubled that codec's performance, he said.

Lapped transforms are Daala's alternative to the discrete cosine transform (DCT) that HEVC and similar codecs rely on in the transformation step. DCTs start by breaking each frame into blocks (such as 8-by-8 pixel blocks), and those blocks result in the blocky visual artifacts seen whenever a movie is overcompressed. Lapped transforms add a pre-filter at the beginning of the process and a matched post-filter at the end, and the blocks of the transform overlap with (but are not identical to) the blocks used by the filters. That eliminates blocky artifacts, outperforms DCT, and even offers better compression than wavelets.

Daala also diverges from the beaten path when it comes to intra-prediction—the step of predicting the contents of a block based on its neighboring blocks, Maxwell said. Typical intra-prediction in DCT codecs uses the one-pixel border of neighboring blocks, which does not work well with textured areas of the frame and more importantly does not work with lapped transforms since they do not have blocks at all. But DCT codecs typically make their block predictions in the un-transformed pixel domain; the Daala team decided to try making predictions in the frequency domain instead, which turned out to be quite successful.

But for this new approach, they had to experiment to figure out what basis functions to use as the predictors. So they ran machine learning experiments on a variety of test images (using different initial conditions), and found an efficient set of functions by seeing where the learning algorithm converged. The results are marginally better than DCT, and could be improved with more work. But another interesting fact, he said, was that the frequency-domain predictors happen to work very well with patterned images (which makes sense when one thinks about it: patterns are periodic textures), where DCT does poorly.

Pyramid vector quantization is a technique that came from the Opus project, he said, and it is still in the experimental stage for Daala. The idea is that in the quantization step, encoding the "energy level" (i.e., magnitude) separately from details produces higher perceptual quality. This was clearly the case with Opus, but the team is still figuring out how to apply it to Daala. At the moment, pyramid vector quantization in Daala has the effect of making lower-quality regions of the frame look grainy (or noisy) rather than blurry. That sounds like a reasonable trade-off, Maxwell said, but more work is needed.

Similarly, the Chroma from Luma and OBMC techniques are also still in heavy development. Chroma from Luma is a way to take advantage of the fact in the YUV color space used for video, edges and other image features that are visible in the Luma (brightness) channel almost always correspond to edges in the Chroma (color) channels. The idea has been examined in DCT codecs before, but is not used because it is computationally slow in the pixel domain. In Daala's frequency domain, however, it is quite fast.

OBMC is a way to predict frame contents based on motion in previous frames (also known as inter-prediction). Here again, the traditional method builds on a DCT codec's block structures, which Daala does not have. Instead, the project has been working on using the motion compensation technique used in the Dirac codec, which blends together several motion vectors predicted from nearby. On the plus side, this results in improved PSNR numbers, but on the down side it has negative side effects like blurring sharp features or introducing ghosting artifacts. It also risks introducing block artifacts, since unlike Daala's other techniques it is a block-based operation. To compensate, the project is working on adapting OBMC to variable block sizes; Dirac already does something to that effect but it is inefficient. Daala is using an adaptive subdivision technique, subdividing blocks only as needed.

There are still plenty of unfinished pieces, Maxwell said, showing several techniques based on patent-unencumbered research papers that the project would like to follow up on. The area is "far from exhausted," and what Daala needs most is "more engineers and more Moore's Law." This is particularly true because right now the industry is distracted by figuring out what to do with HEVC and VP9. He invited anyone with an interest in the subject to join the project, and invited application developers to get involved, too. Opus benefited significantly by testing in applications, he said, and Daala would benefit as well. In response to another audience question, he added that Daala is not attempting to compete with VP9, but that Xiph.org has heard "murmurs" from Google that if it looks good, Daala might supplant VP10.

The codec development race is an ongoing battle, and perhaps it will never be finished, as multimedia capabilities continue to advance. Nevertheless, it is interesting to watch Xiph.org break out of the traditional DCT-based codec mold and aim for a generation (or more) beyond what everyone else is working on. On the other hand, perhaps codec technology will get good enough that (as with JPEG) additional compression gains do not matter in the high-bandwidth future. In either case, having a royalty-free codec available is certainly paramount.

[The author would like to thank the Linux Foundation for travel assistance to Edinburgh for GStreamer Conference 2013.]

Comments (6 posted)

Brief items

Quotes of the week

The belief that every [Debian Developer] is technically omniscient is the reason why we still have so many pointlessly heated debates on this mailing list.
Stefano Zacchiroli (hat tip to Andreas Nilsson)

Who wrote this! And what was I thinking?
— "Overheard" by Ted Gould

Comments (none posted)

Firefox 25 released

Firefox 25 has been released. See the release notes for details. This version adds Web Audio support among other changes and bug fixes.

Comments (none posted)

Introducing ownCloud Documents

The ownCloud project is adding a collaborative editing feature whereby multiple people can work on the same document simultaneously and watch each other's changes. "All the documents are based on ODT files that live in your ownCloud. This means that you can sync your documents to your desktop and open them with LibreOffice, Calligra, OpenOffice or MS Office 2013 in parallel. Or you can access them via WebDAV if you want. You also get all the other ownCloud features like versioning, encryption, undelete and so on."

Comments (4 posted)

Exim 4.82 available

Version 4.82 of the Exim mail transfer agent has been released. This update adds several new features, such as experimental support for DMARC and PRDR, cutthroat delivery, and enhancements to header generation and authentication.

Full Story (comments: 1)

MELT 1.0 plugin for GCC

Version 1.0 of the MELT plugin for GCC has been released. This plugin supports GCC 4.7 and 4.8, and enables users to write GCC extensions in the Lisp-like MELT language. The release notes provide a taste of the plugin's capabilities for those unfamiliar: "MELT can also be used to explore the GCC (mostly middle-end) internal representations notably Gimple-s and Tree-s. With MELT you can for example, with a few arguments to gcc, find all calls to malloc with a constant size greater than 100 (and you need to do that *inside* the compiler, because that size could be constant folded and using sizeof etc....)."

Full Story (comments: none)

Python 2.6.9 available

Python 2.6.9 is now available. While this is a security-update-only release, it is noteworthy because it marks the final release of the Python 2.6.x series—and the final release coordinated by Barry Warsaw, who notes: "Over the 19 years I have been involved with Python, I've been honored, challenged, stressed, and immeasurably rewarded by managing several Python releases. I wish I could thank each of you individually for all the support you've generously given me in this role. You deserve most of the credit for all these great releases; I'm just a monkey pushing buttons. :)"

Full Story (comments: none)

Cisco to release an open-source H.264 codec

Cisco has announced the planned release of its H.264 video codec under the BSD license. "We plan to open-source our H.264 codec, and to provide it as a binary module that can be downloaded for free from the Internet. Cisco will not pass on our MPEG LA licensing costs for this module, and based on the current licensing environment, this will effectively make H.264 free for use in WebRTC." Mozilla has announced that it will incorporate this binary module into Firefox.

Comments (121 posted)

Newsletters and articles

Development newsletters from the past week

Comments (none posted)

First Tizen tablet launches in Japan (Engadget)

Engadget reports that a Tizen build kit will be available in Japan. "It's a package that includes developer tools, manuals and technical and consulting services from Systena, but the real star of the kit is the included 10.1-inch developer tablet. Packing a quad-core 1.4 GHz ARM Cortex-A9 processor, 2GB of RAM and 32GB of storage underneath a 1,920 x 1,200 display, this slab offers a Tizen 2.1 experience built specifically for app development and product demonstration."

Comments (2 posted)

Mozilla: Pushing the Web Audio API to its limits

The Mozilla Hacks site has an extensive article on the Web Audio API, which is included in the just-announced Firefox 25 release. "From a game designer perspective we can use the functionality of the Web Audio API to tune the soundscape of our game. We can run a whole lot of separate sounds simultaneously while also adjusting their character to fit an environment or a game mechanic. You can have muffled sounds coming through a closed door and open the filters for these sounds to unmuffle them gradually as the door opens. In real time. We can add reflecting sounds of the environment to the footsteps of my character as we walk from a sidewalk into a church."

Comments (none posted)

GIMP gets advanced metadata support (Libre Graphics World)

Libre Graphics World takes a look at the recent merger of code to add a long-requested feature to GIMP: the ability to edit standard metadata formats like Exif, XMP, and IPTC. This feature is frequently demanded by professional users, although the article notes other useful effects as well. "Also, Commons Machinery team is quite interested in getting GIMP to support preservation of metadata in compound works of art. They already provided a similar patch for Inkscape regarding SVG. And now that GIMP can read XMP, it's possible to make this happen."

Comments (none posted)

Page editor: Nathan Willis
Next page: Announcements>>


Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds

肝胃郁热吃什么中成药 做b超为什么要憋尿 2e是什么意思 多维元素片有什么作用 拿的起放的下是什么意思
电动车电池什么牌子好 空调自动关机什么原因 姓兰的是什么民族 心肌酶是检查什么的 不由自主的摇头是什么病
肠道感染是什么原因引起的 上面一个四下面一个正念什么 内分泌挂什么科 明油是什么油 胸口疼痛吃什么药
雌激素低吃什么药 kbs是什么意思 滞气是什么意思 孕妇dha什么时候吃 反射弧太长是什么意思
同妻是什么意思beikeqingting.com 但微颔之的之是什么意思hcv9jop2ns4r.cn emerson是什么牌子aiwuzhiyu.com 血管瘤吃什么药hcv9jop3ns5r.cn 为什么会湿疹hcv8jop9ns4r.cn
红酒兑什么好喝hcv8jop6ns6r.cn roma是什么牌子96micro.com 羊肉和什么菜包饺子好吃hcv8jop3ns0r.cn 茶禅一味是什么意思hcv9jop4ns7r.cn 什么叫邪淫hcv9jop4ns5r.cn
手掌心出汗是什么原因hcv8jop6ns1r.cn 教师节送老师什么好hcv7jop4ns5r.cn 十一月二十是什么星座hcv8jop2ns1r.cn 周莹是什么电视剧hcv9jop4ns2r.cn fizz是什么意思hcv7jop9ns5r.cn
乘务员是干什么的hcv8jop2ns6r.cn 什么不可什么四字词语hcv9jop7ns2r.cn 散射光是什么意思hcv8jop5ns9r.cn 胰岛素高是什么意思hcv8jop6ns8r.cn 给产妇送什么礼物好hcv9jop2ns9r.cn
百度