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

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

?? effect.cpp

?? windows mobile上很好用的音頻播放器希望大家會喜歡
?? CPP
字號:
#include <windows.h>
#include "maplay.h"
#include "helper.h"
#include "effect.h"
#include <math.h>

short Clip16(int s)
{
	int nRet = s;
	if (nRet > 32767)
		nRet = 32767;
	else if (nRet < -32768)
		nRet = -32768;
	return (short)nRet;
}

unsigned char Clip8(int s)
{
	int nRet = s;
	if (nRet > 255)
		nRet = 255;
	else if (nRet < 0)
		nRet = 0;
	return (unsigned char)nRet;
}

#define SURROUND_PREAMP		(-0.035)

CSurroundEffect::CSurroundEffect()
{
	m_fEnable = FALSE;
	m_nRate = 20;
	m_nPreamp = (int)(pow(10, SURROUND_PREAMP * m_nRate / 20) * 100);
}

CSurroundEffect::~CSurroundEffect()
{
}

void CSurroundEffect::SetParameter(EFFECT* value)
{
	m_fEnable = value->fEnable;
	m_nRate = max(min(value->nRate, 100), 0);
	m_nPreamp = (int)(pow(10, SURROUND_PREAMP * m_nRate / 20) * 100);
}

void CSurroundEffect::GetParameter(EFFECT* value)
{
	value->fEnable = m_fEnable;
	value->nRate = m_nRate;
	value->nDelay = 0;
}

void CSurroundEffect::Process(int nResolution, void* pBuf, DWORD cbSize)
{
	if (!m_fEnable || !m_nRate)
		return;

	if (nResolution == 8) {
		unsigned char* pSample = (unsigned char*)pBuf;
		int nSamples = cbSize / (sizeof(unsigned char) * 2);
		while (nSamples) {
			int l = UINT8_TO_INT16((int)*pSample);
			int r = UINT8_TO_INT16((int)*(pSample + 1));
			*pSample++ = Clip8(INT16_TO_UINT8((l + (l - r) * m_nRate / 100)) * m_nPreamp / 100);
			*pSample++ = Clip8(INT16_TO_UINT8((r + (r - l) * m_nRate / 100)) * m_nPreamp / 100);
			nSamples--;
		}
	}
	else if (nResolution == 16) {
		short* pSample = (short*)pBuf;
		int nSamples = cbSize / (sizeof(short) * 2);
		while (nSamples) {
			int l = *pSample;
			int r = *(pSample + 1);
			*pSample++ = Clip16((l + (l - r) * m_nRate / 100) * m_nPreamp / 100);
			*pSample++ = Clip16((r + (r - l) * m_nRate / 100) * m_nPreamp / 100);
			nSamples--;
		}
	}	
}

CDelayEffect::CDelayEffect(BOOL fEcho)
{
	m_nChannels = 0;
	m_nSamplingRate = 0;
	m_nReadPos = 0;
	m_nWritePos = 0;
	m_cBuf = 0;
	m_pBuf = NULL;

	m_fEcho = fEcho;
	m_fEnable = FALSE;
	m_nDelay = 100;
	m_nRate = 20;
}

CDelayEffect::~CDelayEffect()
{
}

void CDelayEffect::Open(int nChannels, int nSamplingRate)
{
	m_nChannels = nChannels;
	m_nSamplingRate = nSamplingRate;
	if (!nChannels || !nSamplingRate)
		return;
	
	if (!m_fEnable)
		return;
		
	if (!m_nRate || !m_nDelay)
		return;

	m_cBuf = (m_nDelay * nSamplingRate / 1000) * nChannels;
	if (m_cBuf & 1)
		m_cBuf = (m_cBuf & 0xFFFFFFF0) + 1;
	m_cBuf += 1;

	m_pBuf = new int[m_cBuf];
	memset(m_pBuf, 0, sizeof(int) * m_cBuf);
	m_nWritePos = 0;
	m_nReadPos = 1;
}

void CDelayEffect::Close()
{
	if (!m_pBuf) {
		delete [] m_pBuf;
		m_pBuf = NULL;
	}
}

void CDelayEffect::Process(int nResolution, void* pBuf, DWORD cbSize)
{
	CAutoLock lock(&m_csec);
	if (!m_fEnable)
		return;

	if (!m_nChannels || !m_nSamplingRate)
		return;

	if (!m_nDelay || !m_nRate)
		return;

	if (!m_pBuf)
		return;

	if (nResolution == 8) {
		unsigned char* pSample = (unsigned char*)pBuf;
		int nSamples = cbSize / sizeof(unsigned char) / m_nChannels;
		while (nSamples--) {
			for (int i = 0; i < m_nChannels; i++) {
				*pSample = INT16_TO_UINT8(DelayEffect(UINT8_TO_INT16(*pSample), i));
				pSample++;
			}
		}
	}
	else if (nResolution == 16) {
		short* pSample = (short*)pBuf;
		int nSamples = cbSize / sizeof(short) / m_nChannels;
		while (nSamples--) {
			for (int i = 0; i < m_nChannels; i++) {
				*pSample = DelayEffect(*pSample, i);
				pSample++;
			}
		}
	}
}

void CDelayEffect::SetParameter(EFFECT* value)
{	
	CAutoLock lock(&m_csec);
	int nChannels, nSamplingRate;
	nChannels = m_nChannels; nSamplingRate = m_nSamplingRate;
	Close();

	m_fEnable = value->fEnable; 
	m_nDelay = value->nDelay;
	m_nRate = value->nRate;

	Open(m_nChannels, m_nSamplingRate);
}

void CDelayEffect::GetParameter(EFFECT* value)
{	
	value->fEnable = m_fEnable; 
	value->nDelay = m_nDelay;
	value->nRate = m_nRate;
}

short CDelayEffect::DelayEffect(short s, int nChannel)
{
	int* p;
	int nRet;

	p = (int*)m_pBuf;

	if (m_fEcho)
		*(p + m_nWritePos++) = s;

	nRet = s + *(p + m_nReadPos++) * m_nRate / 100;

	nRet = Clip16(nRet);
	if (!m_fEcho)
		*(p + m_nWritePos++) = nRet;

	if (m_nReadPos == m_cBuf)
		m_nReadPos = 0;
	if (m_nWritePos == m_cBuf)
		m_nWritePos = 0;
	return (short)nRet;
}

void CDelayEffect::Reset()
{
	if (!m_pBuf)
		return;

	CAutoLock lock(&m_csec);
	memset(m_pBuf, 0, sizeof(int) * m_cBuf);
}

CBassBoost::CBassBoost()
{
	m_nChannels = m_nSampleRate = 0;
	m_nLevel = 0;
	m_nPreamp = 100;
}

CBassBoost::~CBassBoost()
{
}

#define BASSBOOST_PREAMP		(-0.4)
#define BASSBOOST_FREQUENCY		145
#ifdef FIXED_BASSBOOOST
#define FIXED_FIG				24
#define FIXED_BASE				(1 << FIXED_FIG)
#define TO_FIXED_POINT(x)		((BB_FIXED_T)((x) * FIXED_BASE))
#define FROM_FIXED_POINT(x)		((BB_FIXED_T2)((x) >> FIXED_FIG))
#define ADD_PREAMP(x)			((x) << 8)
#define REMOVE_PREAMP(x)		((x) >> 8)
#else
#define TO_FIXED_POINT(x)		((BB_FIXED_T)(x))
#define FROM_FIXED_POINT(x)		((BB_FIXED_T2)(x))
#define ADD_PREAMP(x)			((BB_FIXED_T2)((x) << 8))
#define REMOVE_PREAMP(x)		((int)(x) >> 8)
#endif

void CBassBoost::Open(int nChannels, int nSampleRate)
{
	m_nChannels = nChannels;
	m_nSampleRate = nSampleRate;

	if (!m_nLevel || !m_nChannels || !m_nSampleRate)
		return;

	double omega = 2 * 3.141592653589 * BASSBOOST_FREQUENCY / nSampleRate;
	double sn = sin(omega);
	double cs = cos(omega);
	double ax = exp(log(10) * (double)m_nLevel * 0.35 / 40);
	double shape = 7.0;
	double beta = sqrt((ax * ax + 1) / shape - (pow((ax - 1), 2)));
	double b0 = ax * ((ax + 1) - (ax - 1) * cs + beta * sn);
	double b1 = 2 * ax * ((ax - 1) - (ax + 1) * cs);
	double b2 = ax * ((ax + 1) - (ax - 1) * cs - beta * sn);
	double a0 = ((ax + 1) + (ax - 1) * cs + beta * sn);
	double a1 = -2 * ((ax - 1) + (ax + 1) * cs);
	double a2 = (ax + 1) + (ax - 1) * cs - beta * sn;

	b[0] = TO_FIXED_POINT(b0 / a0);
	b[1] = TO_FIXED_POINT(b1 / a0);
	b[2] = TO_FIXED_POINT(b2 / a0);
	a[1] = TO_FIXED_POINT(a1 / a0);
	a[2] = TO_FIXED_POINT(a2 / a0);

	memset(xn, 0, sizeof(xn));
	memset(yn, 0, sizeof(yn));
	m_nPreamp = (int)(pow(10, BASSBOOST_PREAMP * m_nLevel / 20) * 100);
}

void CBassBoost::Close()
{
	m_nChannels = m_nSampleRate = 0;
}

void CBassBoost::Reset()
{
	memset(xn, 0, sizeof(xn));
	memset(yn, 0, sizeof(yn));
}

void CBassBoost::Process(int nResolution, void* pBuf, DWORD nSize)
{
	CAutoLock lock(&m_csec);
	if (!m_nLevel || !m_nChannels || !m_nSampleRate)
		return;

	if (nResolution == 8) {
		unsigned char* pSample = (unsigned char*)pBuf;
		int nSamples = nSize / sizeof(unsigned char) / m_nChannels;

		BB_FIXED_T2 in, out;
		for (int i = 0; i < nSamples; i++) {
			in = (BB_FIXED_T2)ADD_PREAMP(UINT8_TO_INT16((int)*pSample));
			out = FROM_FIXED_POINT((b[0] * in)
									+ (b[1] * xn[0][0])
									+ (b[2] * xn[1][0])
									- (a[1] * yn[0][0])
									- (a[2] * yn[1][0]));

			xn[1][0] = xn[0][0];
			xn[0][0] = in;
			yn[1][0] = yn[0][0];
			yn[0][0] = out;
			*pSample++ = Clip8(INT16_TO_UINT8(REMOVE_PREAMP(out)* m_nPreamp / 100));

			if (m_nChannels == 2) {
				in = (BB_FIXED_T2)ADD_PREAMP(UINT8_TO_INT16((int)*pSample));
				out = FROM_FIXED_POINT((b[0] * in)
									+ (b[1] * xn[0][0])
									+ (b[2] * xn[1][0])
									- (a[1] * yn[0][0])
									- (a[2] * yn[1][0]));

				xn[1][1] = xn[0][0];
				xn[0][1] = in;
				yn[1][1] = yn[0][0];
				yn[0][1] = out;
				*pSample++ = Clip8(INT16_TO_UINT8(REMOVE_PREAMP(out) * m_nPreamp / 100));
			}
		}
	}
	else if (nResolution == 16) {
		short* pSample = (short*)pBuf;
		int nSamples = nSize / sizeof(short) / m_nChannels;

		BB_FIXED_T2 in, out;
		for (int i = 0; i < nSamples; i++) {
			in = (BB_FIXED_T2)ADD_PREAMP(*pSample);
			out = FROM_FIXED_POINT((b[0] * in)
									+ (b[1] * xn[0][0])
									+ (b[2] * xn[1][0])
									- (a[1] * yn[0][0])
									- (a[2] * yn[1][0]));

			xn[1][0] = xn[0][0];
			xn[0][0] = in;
			yn[1][0] = yn[0][0];
			yn[0][0] = out;
			*pSample++ = Clip16(REMOVE_PREAMP(out) * m_nPreamp / 100);

			if (m_nChannels == 2) {
				in = (BB_FIXED_T2)ADD_PREAMP(*pSample);
				out = FROM_FIXED_POINT((b[0] * in)
										+ (b[1] * xn[0][0])
										+ (b[2] * xn[1][0])
										- (a[1] * yn[0][0])
										- (a[2] * yn[1][0]));
				xn[1][1] = xn[0][0];
				xn[0][1] = in;
				yn[1][1] = yn[0][0];
				yn[0][1] = out;
				*pSample++ = Clip16(REMOVE_PREAMP(out)* m_nPreamp / 100);
			}
		}
	}
}

void CBassBoost::SetLevel(int nLevel)
{
	CAutoLock lock(&m_csec);
	int nChannels = m_nChannels;
	int nSampleRate = m_nSampleRate;
	Close();

	m_nLevel = min(max(0, nLevel), 20);
	Open(nChannels, nSampleRate);
}

#define CHORUS_PREAMP		(-0.035)
#define CHORUS_DELAY	6
#define CHORUS_DEPTH	3
#ifdef _WIN32_WCE
#define CHORUS_FIXED_T	int
#define CHORUS_BITS		8
#define CHORUS_BASE		((CHORUS_FIXED_T)1 << CHORUS_BITS)
#else
#define CHORUS_FIXED_T	LONGLONG
#define CHORUS_BITS		31
#define CHORUS_BASE		((CHORUS_FIXED_T)1 << CHORUS_BITS)
#endif

C3DChorus::C3DChorus()
{
	m_fEnable = FALSE;
	m_nRate = 50;

	m_nSampleRate = 0;
	m_pBuf[0] = m_pBuf[1] = NULL;

	Reset();
}

C3DChorus::~C3DChorus()
{
	Close();
}

void C3DChorus::Open(int nSampleRate)
{
	m_pBuf[0] = new int[nSampleRate];
	m_pBuf[1] = new int[nSampleRate];
	
	m_nDelayOffset = nSampleRate * CHORUS_DELAY / 1000;
	m_nDepth = ((CHORUS_FIXED_T)CHORUS_DEPTH << (CHORUS_BITS + 1)) / 1000;
	m_nSampleRate = nSampleRate;

	Reset();
}

void C3DChorus::Process(int nResolution, LPBYTE pbBuf, DWORD cbSize)
{
	CAutoLock lock(&m_csec);
	if (!m_pBuf || !m_fEnable || m_nRate == 0)
		return;
	
	if (nResolution == 16) {
		short* pSample = (short*)pbBuf;
		int nSamples = cbSize / (sizeof(short) * 2);
		while (nSamples) {
			*pSample++ = Chorus(*pSample, 0);
			*pSample++ = Chorus(*pSample, 1);
			nSamples--;
		}
	}
	else if (nResolution == 8) {
		unsigned char* pSample = (unsigned char*)pbBuf;
		int nSamples = cbSize / (sizeof(unsigned char) * 2);
		while (nSamples) {
			*pSample++ = INT16_TO_UINT8(Chorus(UINT8_TO_INT16(*pSample), 0));
			*pSample++ = INT16_TO_UINT8(Chorus(UINT8_TO_INT16(*pSample), 1));
			nSamples--;
		}
	}
}

void C3DChorus::Close()
{
	if (m_pBuf[0]) {
		delete m_pBuf[0];
		m_pBuf[0] = NULL;
	}
	if (m_pBuf[1]) {
		delete m_pBuf[1];
		m_pBuf[1] = NULL;
	}
	m_nSampleRate = 0;
}

void C3DChorus::Reset()
{
	CAutoLock lock(&m_csec);
	m_nCyclePos[0] = 0;
	m_nCyclePos[1] = m_nSampleRate / 2;
	m_nWritePos[0] = m_nWritePos[1] = 0;
	if (m_pBuf[0])
		memset(m_pBuf[0], 0, sizeof(int) * m_nSampleRate);
	if (m_pBuf[1])
		memset(m_pBuf[1], 0, sizeof(int) * m_nSampleRate);

	m_nPreamp = (int)(pow(10, CHORUS_PREAMP * m_nRate / 20) * 100);
}

short C3DChorus::Chorus(short s, int nChannel)
{
	CHORUS_FIXED_T s2 = (CHORUS_FIXED_T)s << CHORUS_BITS;
	CHORUS_FIXED_T offset;

	offset = ((CHORUS_FIXED_T)m_nWritePos[nChannel] - m_nDelayOffset) << CHORUS_BITS;
	if (m_nCyclePos[nChannel] < m_nSampleRate / 2)
		offset -= (CHORUS_FIXED_T)m_nDepth * m_nCyclePos[nChannel];
	else
		offset -= (CHORUS_FIXED_T)m_nDepth * (m_nSampleRate - m_nCyclePos[nChannel]);

	if (offset < 0)
		offset += (CHORUS_FIXED_T)(m_nSampleRate - 1) << CHORUS_BITS;

	int offset1 = (int)(offset >> CHORUS_BITS);
	int offset2 = offset1 + 1;
	if (offset2 == m_nSampleRate - 1)
		offset2 = 0;

	int mod = (int)(offset % CHORUS_BASE);
	CHORUS_FIXED_T s3 = (CHORUS_FIXED_T)m_pBuf[nChannel][offset1] * (CHORUS_BASE - mod);
	s3 += (CHORUS_FIXED_T)m_pBuf[nChannel][offset2] * mod;

	s2 -= (s3 * m_nRate / 100);

	m_pBuf[nChannel][m_nWritePos[nChannel]] = s;

	m_nWritePos[nChannel]++;
	if (m_nWritePos[nChannel] == m_nSampleRate - 1)
		m_nWritePos[nChannel] = 0;
	
	m_nCyclePos[nChannel]++;
	if (m_nCyclePos[nChannel] == m_nSampleRate - 1)
		m_nCyclePos[nChannel] = 0;

	return Clip16((int)((s2 * m_nPreamp / 100) >> CHORUS_BITS));
}

void C3DChorus::SetParameter(EFFECT* value)
{
	m_fEnable = value->fEnable;
	m_nRate = value->nRate;
	Reset();
}

void C3DChorus::GetParameter(EFFECT* value)
{
	value->fEnable = m_fEnable;
	value->nRate = m_nRate;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人午夜精品5599| av一区二区不卡| 亚洲不卡av一区二区三区| 亚洲视频在线观看三级| 国产精品美女视频| 亚洲免费成人av| 亚洲欧美另类小说| 一区二区三区视频在线看| 中文字幕亚洲区| 亚洲乱码国产乱码精品精小说| 国产精品不卡在线| 一区二区在线看| 午夜不卡在线视频| 免费高清成人在线| 韩国av一区二区三区四区| 国产不卡高清在线观看视频| 国产91丝袜在线18| 94-欧美-setu| 精品视频一区二区不卡| 欧美精品久久一区二区三区 | 尤物视频一区二区| 亚洲在线视频免费观看| 婷婷开心久久网| 精品一区免费av| 国产精品中文字幕欧美| 99国产精品99久久久久久| 日本久久一区二区三区| 制服丝袜亚洲色图| 久久综合九色欧美综合狠狠| 中国色在线观看另类| 亚洲欧美一区二区三区极速播放 | 亚洲最新视频在线播放| 三级成人在线视频| 国模大尺度一区二区三区| 成+人+亚洲+综合天堂| 色天天综合久久久久综合片| 制服丝袜在线91| 国产欧美日韩三级| 亚洲一区影音先锋| 精品一二三四区| 91免费国产在线| 欧美成人三级在线| 国产精品国产馆在线真实露脸| 亚洲在线成人精品| 国产一区二区不卡| 91丨porny丨最新| 精品国产免费人成电影在线观看四季| 中文av字幕一区| 日本欧美在线看| 91网上在线视频| 精品国产91乱码一区二区三区| 综合av第一页| 久久精品国产亚洲高清剧情介绍| 99久久免费国产| 久久亚洲精品小早川怜子| 亚洲午夜激情av| 成人做爰69片免费看网站| 欧美精品日日鲁夜夜添| 一区在线观看视频| 国产综合色精品一区二区三区| 欧美日韩视频不卡| 国产精品久久久久久久午夜片| 青青草国产精品亚洲专区无| 菠萝蜜视频在线观看一区| 欧美日韩高清在线播放| 久久久久久久综合| 一二三四区精品视频| 一区二区三区日韩精品视频| 日本亚洲电影天堂| aaa欧美大片| 欧美一区二区三区白人| 中文在线一区二区| 一区二区欧美精品| 久久精品国产澳门| 成人免费视频caoporn| 欧美性受xxxx黑人xyx性爽| 国产午夜亚洲精品不卡| 亚洲电影激情视频网站| 国产福利一区二区| 8x8x8国产精品| 亚洲欧美视频一区| 国产69精品久久久久毛片| 欧美成人精精品一区二区频| 亚洲裸体xxx| 国产精品一区免费视频| 欧美日韩国产高清一区二区| 亚洲三级在线播放| 国产精品香蕉一区二区三区| 欧美日韩黄视频| 亚洲国产另类精品专区| 不卡欧美aaaaa| 久久久天堂av| 老司机午夜精品99久久| 欧美色图免费看| 亚洲日本一区二区| 激情综合网av| 91精品免费观看| 亚洲国产欧美在线| 色婷婷综合久久久中文一区二区| 欧美韩国日本不卡| 激情深爱一区二区| 久久久亚洲精华液精华液精华液 | 男男视频亚洲欧美| 欧洲av在线精品| 亚洲日本中文字幕区| 丁香一区二区三区| 久久久国产一区二区三区四区小说| 日韩精品欧美精品| av电影在线观看一区| 精品国产一二三区| 国产综合色精品一区二区三区| 91精品国产综合久久福利软件 | 欧美一区二区三区视频在线| 日本vs亚洲vs韩国一区三区 | 欧美日韩国产经典色站一区二区三区 | 成人午夜av电影| 欧美精品一区二区高清在线观看| 蜜臀av亚洲一区中文字幕| 在线不卡的av| 日韩黄色免费电影| 色婷婷久久久久swag精品| 国产精品久久三区| aa级大片欧美| 一区二区视频在线| 日本精品视频一区二区三区| 亚洲精品国产成人久久av盗摄 | 久久99精品国产麻豆婷婷| 日韩欧美一级二级三级| 午夜精品久久久久久不卡8050| 日韩欧美国产精品一区| 久久丁香综合五月国产三级网站| 日韩欧美国产三级电影视频| 国产一区999| 欧美激情在线观看视频免费| hitomi一区二区三区精品| 国产精品成人网| 欧美性猛片aaaaaaa做受| 亚洲一区二区三区视频在线| 欧美日免费三级在线| 日韩精品亚洲专区| 欧美成人r级一区二区三区| 国产麻豆一精品一av一免费 | 日韩精品久久久久久| 欧美变态凌虐bdsm| 国产福利精品导航| 国产精品免费看片| 欧美系列一区二区| 九九视频精品免费| 中文字幕永久在线不卡| 色婷婷精品大视频在线蜜桃视频| 亚洲成va人在线观看| 日韩欧美国产综合一区 | 免费成人在线观看视频| 国产精品国产a级| 欧美少妇性性性| 另类小说综合欧美亚洲| 国产欧美综合色| 91国产丝袜在线播放| 免费在线成人网| 国产精品三级电影| 欧美三级电影在线看| 精品午夜一区二区三区在线观看| 亚洲欧美怡红院| 91麻豆精品国产| 成人丝袜18视频在线观看| 亚洲影视在线观看| www一区二区| 欧美性一区二区| 国产乱人伦偷精品视频免下载| 亚洲欧美日韩国产综合| 51精品秘密在线观看| 成人99免费视频| 日本中文字幕一区二区有限公司| 国产亚洲欧洲一区高清在线观看| 日本韩国欧美一区二区三区| 精品一区二区三区在线观看| 一区二区在线观看免费视频播放| 精品久久久三级丝袜| 国产激情视频一区二区在线观看| 日韩电影在线观看一区| 中文字幕一区二区三区四区 | 成人中文字幕在线| 三级欧美在线一区| 久久影视一区二区| 在线成人午夜影院| 91高清视频免费看| 国产成人在线免费观看| 日韩专区欧美专区| 国产精品国产精品国产专区不片| 日韩一区二区三区视频| 一本高清dvd不卡在线观看| 激情六月婷婷综合| 日韩福利电影在线观看| 亚洲自拍偷拍图区| 欧美精品一区二区久久婷婷| 精品国产一区二区亚洲人成毛片| 在线免费不卡电影| av电影一区二区| 国产精品影视天天线| 奇米影视在线99精品|