В итоге я удалил растровую часть кода. И это сработало! Поэтому ранее я преобразовывал кадр в растровое изображение, и он копировал пиксели из растрового изображения в Texture2D. Я посмотрел поближе и понял, что могу пропустить этот шаг растрового изображения. Прошу прощения за то, что недостаточно ясно дал понять по моему вопросу.
/// <summary>
/// Converts Frame to Texture
/// </summary>
/// <returns>Texture2D</returns>
public Texture2D FrameToTexture2D()
{
Texture2D frameTex = new Texture2D(Memory.spriteBatch.GraphicsDevice, Decoder.CodecContext->width, Decoder.CodecContext->height, false, SurfaceFormat.Color);
const int bpp = 4;
byte[] texBuffer = new byte[Decoder.CodecContext->width * Decoder.CodecContext->height * bpp];
fixed (byte* ptr = &texBuffer[0])
{
byte*[] srcData = { ptr, null, null, null };
int[] srcLinesize = { Decoder.CodecContext->width * bpp, 0, 0, 0 };
// convert video frame to the RGB data
ffmpeg.sws_scale(ScalerContext, Decoder.Frame->data, Decoder.Frame->linesize, 0, Decoder.CodecContext->height, srcData, srcLinesize);
}
frameTex.SetData(texBuffer);
return frameTex;
}
Я рекомендовал бы читать на Генераторах, Итераторах, itertools
и прежде всего Понимания Списка.
Это столбы чего-либо Pythonic. И для всего остального, существует PEP-8.
Читайте на этих понятиях и попытайтесь использовать их везде, где соответствующее.Всего наилучшего!
PS: не забывайте import this
;)
Приложение: Я также агрегировал бы некоторые превосходные предложения, данные другими в этом потоке здесь:
Нет - это характерно для людей, которые перемещаются в Python от другого подобного языкам C. Я верю тому, что Вы ищете, способы сделать Ваш код большим количеством "Pythonic". Хорошими новостями является больше Python, который Вы пишете большему количеству Pythonic, которым станет Ваш код. Это - естественное переполнение, "как я могу сделать это проще" отношение.
Другое хорошее место для взгляда на является Дзэн Python. Эти отношения к разработке Python также помогут Вам в том же отношении.
Необходимо определенно смотреть на этот разговор, когда Вы начинаете делать системное программирование с Python: http://www.dabeaz.com/generators/
Вы получили хорошие предложения до сих пор. Я только добавил бы Погружение В Python.
Править: С 4 октября 2011, эта работа может быть найдена здесь. Погружение В Python 3, здесь. "Почему" это: посмотрите здесь, здесь и здесь.
Недавно я изучал/улучшал свой Python путем решения Euler проблем Проекта в Python. Это работало действительно хорошо на меня потому что:
Я полностью рекомендовал бы это.
Для повторения TLHOLADAY считайте стандартную библиотеку. Это - то, где материал "pythonic". Если Вы не получаете хорошее ощущение там, то считанный источник из sqlachemy или django или Вашего предпочтительного проекта.
Я предложил бы найти персонального гуру Python. Покажите им часть своего кода и сделайте, чтобы они рассмотрели/переписали его в идиоматический Python. Таким образом будете Вы быть просвещенными.
В то время как сценарии сборки и сценарии подсказки [так] не являются действительно самой увлекательной технической разработкой, они - полностью кандидат на раскрытие истинного питания Python.
Во-первых, посмотрите на различное, уже как будто делают инструменты записанными в Python.
Важной персоной в этом водоеме является Scons: http://www.scons.org/. Узнайте об этом.
Это сообщение в блоге говорит об альтернативах http://farmdev.com/thoughts/46/the-python-make-tool/
"Я все еще хотел бы возможность иметь мой ум, унесенный", Запускаются с Google: найдите инструменты Python, которые уже делают некоторых или все из того, что Вы пытаетесь сделать. Кодируйте меньше, загрузите и читайте больше.
Напишите некоторый код Python и отправьте его на ТАК для обзора и обратной связи, является ли это pythonic.
Другой ресурс электростанции: Код Как Pythonista: Идиоматический Python.
Вы читаете Python, который Вы не записали?
Вот сценарий от распределения Python 2.6.1, которое удаляет .pyc и .pyo файлы.
#!/usr/local/bin/python
"""Recursively zap all .pyc and .pyo files"""
import os
import sys
# set doit true to actually delete files
# set doit false to just print what would be deleted
doit = 1
def main():
if not sys.argv[1:]:
if os.name == 'mac':
import EasyDialogs
dir = EasyDialogs.AskFolder(message='Directory to zap pyc files in')
if not dir:
sys.exit(0)
zappyc(dir)
else:
print 'Usage: zappyc dir ...'
sys.exit(1)
for dir in sys.argv[1:]:
zappyc(dir)
def zappyc(dir):
os.path.walk(dir, walker, None)
def walker(dummy, top, names):
for name in names:
if name[-4:] in ('.pyc', '.pyo'):
path = os.path.join(top, name)
print 'Zapping', path
if doit:
os.unlink(path)
if __name__ == '__main__':
main()
Сколько идиом Python можно найти в этом?
Добавить к ответам Andrew Hare и Baishampayan Ghose...
Изучить идиому любого языка должно вовлечь код чтения, написанный в ту идиому. Я все еще изучаю идиому Python, но я был через это с другими языками. Я могу читать о пониманиях списка, но лампочка только действительно продвигается, когда Вы видите такие используемые вещи и говорите, "Ничего себе! Это является потрясающим! Две строки кода и это совершенно прозрачны!" Поэтому пойдите, находят некоторый код pythonic, который Вы находите интересными и начинаете читать его и понимать его. Знание останется в Вашей голове лучше, если Вы будете видеть все в контексте рабочей программы.