2015년 7월 30일 목요일

HW info for linux

dmidecode -t typenumber
:: DMI table decoder

       Type   Information
       --------------------------------------------
          0   BIOS
          1   System
          2   Baseboard
          3   Chassis
          4   Processor
          5   Memory Controller
          6   Memory Module
          7   Cache
          8   Port Connector
          9   System Slots
         10   On Board Devices
         11   OEM Strings
         12   System Configuration Options
         13   BIOS Language
         14   Group Associations
         15   System Event Log
         16   Physical Memory Array
         17   Memory Device
         18   32-bit Memory Error
         19   Memory Array Mapped Address
         20   Memory Device Mapped Address
         21   Built-in Pointing Device
         22   Portable Battery
         23   System Reset
         24   Hardware Security
         25   System Power Controls
         26   Voltage Probe
         27   Cooling Device
         28   Temperature Probe
         29   Electrical Current Probe
         30   Out-of-band Remote Access
         31   Boot Integrity Services
         32   System Boot
         33   64-bit Memory Error
         34   Management Device
         35   Management Device Component
         36   Management Device Threshold Data
         37   Memory Channel
         38   IPMI Device
         39   Power Supply
         40   Additional Information
         41   Onboard Devices Extended Information
         42   Management Controller Host Interface

2015년 7월 21일 화요일

simple rtsp by ffmpeg

vi /etc/ffserver.conf
HTTPPort 7000
RTSPPort 7001
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000

<Feed test.ffm>
        File /tmp/test.ffm
        FileMaxSize 1M
</Feed>

<Stream test.h264>
        Feed test.ffm
        Format rtp

        VideoSize 640x480
        VideoFrameRate 5
        #VideoBitrate 800
        #VideoBufferSize 40
        #VideoCodec libx264

        NoAudio

        MulticastAddress 239.255.0.1
        MulticastPort 20001
        MulticastTTL 4
        Metadata title "test"
</Stream>

<Stream test.rtsp>
        Feed test.ffm
        Format rtp
        VideoSize 640x480
        NoAudio
        Metadata title "test"
</Stream>

<Stream stat.html>
        Format status
        ACL allow 192.168.0.0 192.168.0.255
</Stream>

## rtsp start
ffserver

## input
ffmpeg -re -i ./source.mp4 -vcodec copy -acodec copy http://rtspip:7000/test.ffm

## recv renderring
rtsp://rtspip:7001/test.rtsp

## status check
http://rtspip:7000/stat.html

## ffmpeg info
ffserver version git-2015-05-25-e48a9ac Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-11)
  configuration: --prefix=/root/ffmpeg_build --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin --pkg-config-flags=--static --enable-gpl --enable-nonfree --enable-libfreetype --enable-libx264
  libavutil      54. 23.101 / 54. 23.101
  libavcodec     56. 40.100 / 56. 40.100
  libavformat    56. 33.101 / 56. 33.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 16.101 /  5. 16.101
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100

audio capture & udp send by cscore

public class AudioCapture
    {
        public enum CaptureMode
        {
            Capture,
            LoopbackCapture
        }

        private const CaptureMode captureMode = CaptureMode.LoopbackCapture;
        private MMDevice _selectedDevice;
        private WasapiCapture _soundIn;
        private IWaveSource _finalSource;
        private bool bCapturedStop = false;

        private const int AUDIOBLOCKSIZE = 3528;

        public MMDevice SelectedDevice
        {
            get { return _selectedDevice; }
            set
            {
                _selectedDevice = value;
            }
        }

        private AudioSender audioSender = new AudioSender();

        public bool AudioDeviceInit()
        {
            bool bRtn = false;

            try
            {
                using (var deviceEnumerator = new MMDeviceEnumerator())
                using (var deviceCollection = deviceEnumerator.EnumAudioEndpoints(
                    captureMode == CaptureMode.Capture ? DataFlow.Capture : DataFlow.Render, DeviceState.Active))
                {
                    foreach (var device in deviceCollection)
                    {
                        var deviceFormat = WaveFormatFromBlob(device.PropertyStore[
                            new PropertyKey(new Guid(0xf19f064d, 0x82c, 0x4e27, 0xbc, 0x73, 0x68, 0x82, 0xa1, 0xbb, 0x8e, 0x4c), 0)].BlobValue);

                        _selectedDevice = device;

                        bRtn = true;
                    }
                }
            }
            catch (Exception e)
            {
                K_BoxLog.LogDebug(e);
            }

            return bRtn;
        }

        public bool AudioCaptureStart(string serverip)
        {
            bool bRtn = false;

            try
            {
                if (SelectedDevice == null)
                {
                    return false;
                }

                if (AudioSender.connected == false)
                    audioSender.AudioSendConnect(serverip);

                if (captureMode == CaptureMode.Capture)
                    _soundIn = new WasapiCapture();
                else
                    _soundIn = new WasapiLoopbackCapture();

                _soundIn.Device = SelectedDevice;
                _soundIn.Initialize();

                var soundInSource = new SoundInSource(_soundIn, AUDIOBLOCKSIZE * 4);
                var singleBlockNotificationStream = new SimpleNotificationSource(soundInSource);

                _finalSource = singleBlockNotificationStream
                    .ToWaveSource(16);

                byte[] buffer = new byte[AUDIOBLOCKSIZE * 2];
           
                soundInSource.DataAvailable += (s, e) =>
                {
                    int read;
                    while ((read = _finalSource.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        audioSender.AudioSend(buffer, read);
                    }
                };

                _soundIn.Start();

                bRtn = true;
            }
            catch { }

            return bRtn;
        }

        private void SingleBlockNotificationStreamOnSingleBlockRead(object sender, SingleBlockReadEventArgs e)
        {          
         
        }

        public bool AudioCaptureStop()
        {
            bool bRtn = false;

            try
            {
                if (AudioSender.connected == true)
                    audioSender.AudioSendDisconnect();
                _soundIn.Stop();

                bRtn = false;
            }
            catch  {  }

            return bRtn;
        }

        private static WaveFormat WaveFormatFromBlob(Blob blob)
        {
            if (blob.Length == 40)
                return (WaveFormat)Marshal.PtrToStructure(blob.Data, typeof(WaveFormatExtensible));
            return (WaveFormat)Marshal.PtrToStructure(blob.Data, typeof(WaveFormat));
        }
    }

2015년 7월 20일 월요일

windows icons

Control Box 16x16x256
Taskbar 16x16x256
Notify Icon 32x32x256, shrunk down (see below)
Desktop Shortcut 32x32x256 (Normal sized icons)
48x48x256 (Large sized icons)
Add/Remove Programs 16x16x256
Folder Browse dialog 16x16x256

2015년 7월 16일 목요일

ln

ln -s /home/git/repos /git-repos

unlink git-repos

2015년 7월 14일 화요일

redmine install

ref : http://www.redmine.org/projects/redmine/wiki/install_Redmine_25x_on_Centos_65_complete
http://gen.jusz.pl/2014/04/19/how-to-install-redmine-2-5-on-centos-6-5/

keypoint :
rvm list
rvm list knwon

rvm install 2.1
rvm use 2.1.x --default

current redmine :
Environment:
  Redmine version                2.5.0.stable
  Ruby version                   2.1.6-p336 (2015-04-13) [x86_64-linux]
  Rails version                  3.2.17
  Environment                    production
  Database adapter               Mysql2
SCM:
  Subversion                     1.6.11
  Mercurial                      1.4
  Git                            1.7.1
  Filesystem                  
Redmine plugins:
  redmine_agile                  1.3.9