void SaveFrame(AVFrame *pFrame, int width, int height, int iFrame)
{
    FILE *pFile;
	char szFilename[32];
	int y;
	GLuint texture;
	uint8_t * pic_data = new uint8_t[height * width * 3];
	uint8_t * t_data = new uint8_t[width * 3];
	glEnable(GL_TEXTURE_2D);
	glGenTextures(1, &texture);					// Create The Texture
 	glBindTexture(GL_TEXTURE_2D, texture);
	
	for( y = 0; y < height; y++ )
	{	
		memcpy(t_data, pFrame->data[0] + y * pFrame->linesize[0], width * 3);
		for (int i=0; i < width * 3; i += 3)
		{
			float avg = t_data[i] + t_data[i+1] + t_data[i+2];
			avg /= 3;
			t_data[i] = avg;
			t_data[i+1] = avg;
			t_data[i+2] = avg;
		}
		memcpy(pic_data + y * width * 3, t_data, width * 3);
	}
 	glTexImage2D(GL_TEXTURE_2D, 0, 3, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, pic_data);
	delete t_data;
	delete pic_data;
 	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
 	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	m_Textures.push_back(texture);
}