미디어 파운데이션 속성
속성은 키와 값으로 이루어진 쌍인데, 키는 GUID이고 값은 PROPVARIANT이다. 속성은 마이크로소프트 미디어 파운데이션 전반에 사용되는데, 객체를 설정할 뿐만 아니라 미디어 서식을 나타내고 객체 속성을 질의하며, 그 밖에 다른 목적으로도 사용할 수 있다. 이번 주제에서는 하기하는 항목에 대해 설명한다. 속성에 대하여 속성 직렬화 하기 IMFAttributes 구현하기 관련 주제 속성에 대하여 속성은 키와 값으로 이루어진 쌍인데, 키는 GUID이고 값은 PROPVARIANT이다. 속성값은 다음 데이터 타입으로 한정한다. 부호 없는 32비트 정수 (UINT32) 부호 없는 64비트 정수 (UINT64) 64비트 부동 소수점수 GUID 와이드 문자로 이루어진 널 종료 문자열 (Null-terminate..
미디어 파운데이션 구조 개요
이번 주제에서는 마이크로소프트 미디어 파운데이션에 대한 전반적인 설계에 대해 설명한다. 미디어 파운데이션을 사용한 특정 프로그래밍 작업과 관련하여 보다 많은 정보는 미디어 파운데이션 프로그래밍 가이드를 참고하는 것이 좋다. 다음 다이어그램은 고수준의 미디어 파운데이션 구조를 보여주고 있다. 미디어 파운데이션은 두 가지 구별되는 프로그래밍 모델을 제공한다. 다이어그램의 왼쪽에 위치해 있는 모델은 미디어 데이터에 대해 종단 간의 파이프라인을 사용한다. 애플리케이션은 파이프라인을 초기화 한 다음 (가령, 재생에 필요한 파일의 URL을 제공하여 초기화) 스트리밍을 제어하기 위해 메소드를 호출한다. 다이어그램의 오른쪽에 위치해 있는 모델에서 애플리케이션은 근원지(source)에서 데이터를 받거나 아니면 목적지로 ..
미디어 파운데이션 : 필수 개념
스트림 (Streams) 스트림은 정해진 형식으로 이루어진 일련의 미디어 데이터이다. 가장 흔한 형식으로는 오디오와 비디오가 있지만, 스트림은 임의의 종류의 데이터 (가령, 텍스트나 스크립트 명령이나 이미지)를 담을 수 있다. 이 문서에서 말하는 스트림은 네트워크를 타고 전달하는 것을 말하는건 아니다. 로컬에서 재생하는 미디어 파일 역시 스트림을 가지고 있다. 보통 미디어 파일은 하나의 오디오 스트림을 가지고 있거나, 오디오 스트림과 비디오 스트림을 각각 딱 하나씩 가지고 있다. 하지만 반드시 그러라는 법은 없고 같은 종류의 여러 스트림을 가지고 있을 수도 있다. 가령, 어떤 비디오 파일은 다국어 지원을 위해 여러 개의 오디오 스트림을 가질 수 있다. 이런 경우, 미디어 파일을 재생할 때 애플리케이션은 ..
문자 부호화(Character encoding)
본 내용은 한글 중심의 문자 부호화에 대해 학습하면서 정리한 내용입니다. 잘못되거나 이해하기 어려운 내용이 있으시면 댓글로 남겨주세요.. 1. 문자(Character) 알파벳이나 자연어에서 쓰이는 음절 형태와 같이 문자소(grapheme), 문자소 비슷한 단위(grapheme-like unit), 또는 기호 정보의 단위이다. 가령, 문자는 글자(letters), 숫자(numerical digits), 점(.)이나 하이픈(-), 공백 등을 포함한다. 컴퓨터에서의 문자는 제어 문자(control characters) 또한 포함하는데, 이건 특정 자연어에서 기호로 나타나지 않는 것들이나 하나 이상의 언어에서 텍스트를 처리하기 위해 사용되는 몇 비트의 정보이다. 예를 들어, 프린터 명령이나 테스트를 보여주거나 ..
드디어 티스토리 개인 블로그에도 HTTPS가 적용되었습니다.
이전에 티스토리 측에 HTTPS 적용과 관련하여 문의를 넣었는데, 답변이 비교적 긍정적이었다는 글을 쓴 적이 있습니다.티스토리 마크다운, HTTPS 관련 질문 & 개인적 생각요즘(이 아니라 예전부터...!!) 티스토리 활동을 자주 하지 않아서 별 기대는 하지 않았는데, 우연히 티스토리 블로그임에도 TLS 인증서가 보이는 곳을 발견하여 확인해 본 결과, 9월 초 쯤 HTTPS 연결을 설정하는 메뉴가 신설되었습니다.더 안전한 티스토리를 위해 - SSL 적용 완료, 티스토리에서 알려드립니다!아무래도 무지 큰 기업에서 제공하는 기능이다 보니 직접 RSA 키를 만들고, 등록하는 복잡한 과정 없이 바로 클릭 몇 번 만으로도 보안 연결을 설정할 수 있어서 좋습니다. 블로그 관리에서 보안 접속을 "사용합니다."로 설정..
[VS2017] E1696, C1083 오류
어제 저녁에 AES-128, 192, 256의 암호화 및 복호화 코드를 구현했습니다. 워낙 잘 알려진 암호화 방법이라서 제가 구현한 방법보다 더 효율적인 코드가 넘쳐나겠지만 구현에 의의를 두고 재밌게 짜봤습니다. 예전에 128비트 AES는 GF(Galois Field) 2의 8승에서 irreducible polynomial과 affine transformation시 더해지는 column vector를 다르게 하여 구현해 본 적이 있었지만, 키 스케줄링이 달라지는 192비트와 256비트은 구현해 본 적이 없었습니다. 192비트는 128비트에서 단순히 키 스케줄링을 늘린 것에 불과하지만, 256비트는 128비트와 사뭇 다른 스케줄링이라서 (그래봤자 형태는 비슷합니다만..) 흥미로웠습니다. AES에 대한 얘기..
티스토리 마크다운, HTTPS 관련 질문 & 개인적 생각
얼마 전 세운상가에서 개최한 네코제를 다녀왔습니다. 토, 일 양일간 진행된 행사에서 전 토요일에 갔다왔는데요, 네코제의 밤이 제일 재미있었던 것 같습니다. 아티스트 분들의 끼와 재능, 그리고 열심히 준비하신 모습이 다 보이는 것 같았습니다. 내년 네코제에서도 다시 뵈었으면 좋겠습니다. 네코제를 즐기는 도중 한 시간정도 여유가 생겨 근처 스타벅스에서 시간을 때우고 있었습니다. 물론 커피만 마시면 재미가 없어서 집에서 주로 노래틀때나 쓰는 인민에어를 켜고 무슨 쇼콜란지 초콜릿 뭐시기를 시켜서 뉴요커 행세를 했습니다. 무료하게 시간이나 보내자니 뭔가 아쉬웠던 찰나, 마침 티스토리에 궁금하던 내용들이 떠올라 다음 고객센터를 방문하게 되었습니다. 티스토리 문의를 별도의 카테고리로 받더군요. 어쨌든 궁금한 내용을 ..
Move Semantics (이동 의미론)
1. 복사 전달과 참조 전달 C를 계승한 C++역시 C와 마찬가지로 데이터를 어떤 함수로 넘길 때나 함수에서 반환할 때, 기본 동작을 (얕은) 복사로 정의하였다. 예를 들어 다음 함수 append_smile은 문자열을 취급하는 std::string 타입의 객체를 전달받아 같은 타입으로 리턴한다. 이 때, 이 함수가 문자열을 전달받을 때와 리턴할 때 모두 값을 복사하여 주고 받는다. 즉, 복사 전달을 수행한다. #include #include std::string append_smile(std::string str) { return str + " :)"; } void foo() { std::vector good_sentence; good_sentence.push_back("Hi"); good_sentenc..
huffman coding
#include #include #include #include #include #include struct Triple { char ch; int count; std::string code;}; std::vector huffman(const std::string& str){ std::map counter; std::vector temp; std::vector result; for(auto it = str.begin(); it != str.end(); it++) { auto cit = counter.find(*it); if(cit == counter.end()) counter.emplace(*it, 1); else (*cit).second++; } for(auto it = counter.begin(); ..
Nested Classes
Nested Classes 클래스 안에 또 다른 클래스를 선언(정의)할 수 있다. 이를 두고 중첩된 클래스(nested classes)라고 한다. 1. Terms nested class(혹은 inner class) : 클래스 안에 또 다른 클래스를 정의할 때, 안쪽에 위치한 클래스이다. enclosing class(혹은 outer class) : nested class를 둘러 싸고 있는 클래스이다. 2. Features nested class에서는 몇 가지 특징에 의해 enclosing class의 멤버에 접근할 수 있다. 2.1. Scope nested class는 enclosing class 범위 안에 존재한다. 따라서, nested class에서 정의된 함수에서 임의의 식별자를 사용할 때 neste..
가속효과 스크립트입니다.
지금으로부터 약 2년 전에 블로그를 찾아주신 한 분께서 가속기능이 있는 코드를 요청하셨습니다. 당시에 저는 군 복무 중이었고, 당장 제가 찾아볼 수 있는 클라우드에서는 보이지 않아 구해드리기 어렵다는 답변을 드렸습니다. 시간이 지나고 전역을 한 이후에, 모 업체의 클라우드 서비스가 휴면계정으로 들어간다는 메일을 받고 해당 클라우드에 들어가게 되었는데, 우연히 가속 기능이 들어있는 파일을 발견했습니다. 제가 앞서 배포한 몇 안되는 코드는 전부 확장자가 lua로 이루어진 파일인 반면, 이 코드는 ASS 포맷에 내장으로 들어가있습니다. 곰곰히 생각해봤는데, 당시에 급하게 만드느라 소위 쌩코딩을 한 모양입니다. 혹시나 필요하신 분이 계실까봐 글을 개시하면서 공유하게 되었습니다. 사용 방법은 간단한데, 가라오케 ..
테트리스 소스 코드
잠결에 주먹구구식으로 만들었는데 더 다듬어야 겠습니다.지금 보니 마음에 안드는 부분이 너무 많아요.. 아무리 대충 짠거라지만 걸레짝이 다름없군요.강좌 식으로는 일 벌린 것들 마무리 하는대로 올리겠습니다. 일단 초안 올립니다. #include #include #include #include typedef unsigned long long ULong; inline bool range(int i, int l, int h) { return (i >= l) && (i < h); } inline void gotoxy(int x, int y) { SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), COORD{ (short)(x ((ULong)nowStage) * 1..