mirror of
https://git.femboyfinancial.jp/james/lipsync.git
synced 2024-11-30 21:52:00 -08:00
82 lines
2.2 KiB
C#
82 lines
2.2 KiB
C#
|
/*
|
|||
|
* SwfWriter.cs
|
|||
|
* Copyright (c) 2008-2009 kbinani
|
|||
|
*
|
|||
|
* This file is part of Boare.Lib.Swf.
|
|||
|
*
|
|||
|
* Boare.Lib.Swf is free software; you can redistribute it and/or
|
|||
|
* modify it under the terms of the BSD License.
|
|||
|
*
|
|||
|
* Boare.Lib.Swf is distributed in the hope that it will be useful,
|
|||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|||
|
*/
|
|||
|
using System;
|
|||
|
using System.IO;
|
|||
|
using System.Collections.Generic;
|
|||
|
|
|||
|
namespace Boare.Lib.Swf {
|
|||
|
|
|||
|
using UI8 = System.Byte;
|
|||
|
using UI32 = System.UInt32;
|
|||
|
using UI16 = System.UInt16;
|
|||
|
using SI8 = System.SByte;
|
|||
|
using SI16 = System.Int16;
|
|||
|
using SI32 = System.Int32;
|
|||
|
|
|||
|
public class SwfWriter : IDisposable {
|
|||
|
|
|||
|
private const UI8 m_version = 0x6;
|
|||
|
private UI16 m_frame_rate;
|
|||
|
private UI16 m_frame_count;
|
|||
|
private FileStream m_stream;
|
|||
|
|
|||
|
public SwfWriter( FileStream s ) {
|
|||
|
m_stream = s;
|
|||
|
|
|||
|
// swf header
|
|||
|
s.WriteByte( 0x46 ); // Signature
|
|||
|
s.WriteByte( 0x57 ); // Signature
|
|||
|
s.WriteByte( 0x53 ); // Signature
|
|||
|
s.WriteByte( m_version ); // Version
|
|||
|
s.WriteByte( 0x0 ); // FileLength
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public void Close() {
|
|||
|
if ( m_stream != null ) {
|
|||
|
m_stream.Close();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public void Dispose() {
|
|||
|
Close();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public static int GetEncodedU32( byte[] pos ) {
|
|||
|
int result = pos[0];
|
|||
|
if ( (result & 0x00000080) == 0x0 ) {
|
|||
|
return result;
|
|||
|
}
|
|||
|
result = (result & 0x0000007f) | pos[1] << 7;
|
|||
|
if ( (result & 0x00004000) == 0x0 ) {
|
|||
|
return result;
|
|||
|
}
|
|||
|
result = (result & 0x00003fff) | pos[2] << 14;
|
|||
|
if ( (result & 0x00200000) == 0x0 ) {
|
|||
|
return result;
|
|||
|
}
|
|||
|
result = (result & 0x001fffff) | pos[3] << 21;
|
|||
|
if ( (result & 0x10000000) == 0x0 ) {
|
|||
|
return result;
|
|||
|
}
|
|||
|
result = (result & 0x0fffffff) | pos[4] << 28;
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
}
|