hornetseye-ffmpeg 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -7,7 +7,7 @@ require 'rake/loaders/makefile'
7
7
  require 'rbconfig'
8
8
 
9
9
  PKG_NAME = 'hornetseye-ffmpeg'
10
- PKG_VERSION = '0.10.0'
10
+ PKG_VERSION = '0.11.0'
11
11
  CFG = RbConfig::CONFIG
12
12
  CXX = ENV[ 'CXX' ] || 'g++'
13
13
  RB_FILES = FileList[ 'lib/**/*.rb' ]
data/ext/avinput.cc CHANGED
@@ -52,20 +52,27 @@ AVInput::AVInput( const string &mrl, bool audio ) throw (Error):
52
52
  cerr << "Video stream index is " << m_videoStream << endl;
53
53
  cerr << "Audio stream index is " << m_audioStream << endl;
54
54
  #endif
55
- ERRORMACRO( m_videoStream >= 0, Error, ,
56
- "Could not find video stream in file \"" << mrl << "\"" );
57
- m_videoDec = m_ic->streams[ m_videoStream ]->codec;
55
+ if ( m_videoStream >= 0 )
56
+ m_videoDec = m_ic->streams[ m_videoStream ]->codec;
57
+ if ( m_videoDec != NULL ) {
58
+ m_videoCodec = avcodec_find_decoder( m_videoDec->codec_id );
59
+ ERRORMACRO( m_videoCodec != NULL, Error, , "Could not find video decoder for "
60
+ "file \"" << mrl << "\"" );
61
+ err = avcodec_open( m_videoDec, m_videoCodec );
62
+ if ( err < 0 ) {
63
+ m_videoCodec = NULL;
64
+ ERRORMACRO( false, Error, , "Error opening video codec for file \""
65
+ << mrl << "\": " << strerror( errno ) );
66
+ };
67
+ m_swsContext = sws_getContext( m_videoDec->width, m_videoDec->height,
68
+ m_videoDec->pix_fmt,
69
+ m_videoDec->width, m_videoDec->height,
70
+ PIX_FMT_YUV420P, SWS_FAST_BILINEAR, 0, 0, 0 );
71
+ m_avFrame = avcodec_alloc_frame();
72
+ ERRORMACRO( m_avFrame, Error, , "Error allocating frame" );
73
+ };
58
74
  if ( m_audioStream >= 0 )
59
75
  m_audioDec = m_ic->streams[ m_audioStream ]->codec;
60
- m_videoCodec = avcodec_find_decoder( m_videoDec->codec_id );
61
- ERRORMACRO( m_videoCodec != NULL, Error, , "Could not find video decoder for "
62
- "file \"" << mrl << "\"" );
63
- err = avcodec_open( m_videoDec, m_videoCodec );
64
- if ( err < 0 ) {
65
- m_videoCodec = NULL;
66
- ERRORMACRO( false, Error, , "Error opening video codec for file \""
67
- << mrl << "\": " << strerror( errno ) );
68
- };
69
76
  if ( m_audioDec != NULL ) {
70
77
  m_audioCodec = avcodec_find_decoder( m_audioDec->codec_id );
71
78
  ERRORMACRO( m_audioCodec != NULL, Error, , "Could not find audio decoder for "
@@ -77,12 +84,6 @@ AVInput::AVInput( const string &mrl, bool audio ) throw (Error):
77
84
  << mrl << "\": " << strerror( errno ) );
78
85
  };
79
86
  };
80
- m_swsContext = sws_getContext( m_videoDec->width, m_videoDec->height,
81
- m_videoDec->pix_fmt,
82
- m_videoDec->width, m_videoDec->height,
83
- PIX_FMT_YUV420P, SWS_FAST_BILINEAR, 0, 0, 0 );
84
- m_avFrame = avcodec_alloc_frame();
85
- ERRORMACRO( m_avFrame, Error, , "Error allocating frame" );
86
87
  } catch ( Error &e ) {
87
88
  close();
88
89
  throw e;
@@ -228,6 +229,11 @@ int AVInput::height(void) const throw (Error)
228
229
  return m_videoDec->height;
229
230
  }
230
231
 
232
+ bool AVInput::hasVideo(void) const
233
+ {
234
+ return m_videoStream != -1;
235
+ }
236
+
231
237
  bool AVInput::hasAudio(void) const
232
238
  {
233
239
  return m_audioStream != -1;
@@ -346,6 +352,7 @@ VALUE AVInput::registerRubyClass( VALUE rbModule )
346
352
  rb_define_method( cRubyClass, "width", RUBY_METHOD_FUNC( wrapWidth ), 0 );
347
353
  rb_define_method( cRubyClass, "height", RUBY_METHOD_FUNC( wrapHeight ), 0 );
348
354
  rb_define_method( cRubyClass, "has_audio?", RUBY_METHOD_FUNC( wrapHasAudio ), 0 );
355
+ rb_define_method( cRubyClass, "has_video?", RUBY_METHOD_FUNC( wrapHasVideo ), 0 );
349
356
  rb_define_method( cRubyClass, "seek", RUBY_METHOD_FUNC( wrapSeek ), 1 );
350
357
  rb_define_method( cRubyClass, "video_pts", RUBY_METHOD_FUNC( wrapVideoPTS ), 0 );
351
358
  rb_define_method( cRubyClass, "audio_pts", RUBY_METHOD_FUNC( wrapAudioPTS ), 0 );
@@ -546,6 +553,12 @@ VALUE AVInput::wrapHeight( VALUE rbSelf )
546
553
  return retVal;
547
554
  }
548
555
 
556
+ VALUE AVInput::wrapHasVideo( VALUE rbSelf )
557
+ {
558
+ AVInputPtr *self; Data_Get_Struct( rbSelf, AVInputPtr, self );
559
+ return (*self)->hasVideo() ? Qtrue : Qfalse;
560
+ }
561
+
549
562
  VALUE AVInput::wrapHasAudio( VALUE rbSelf )
550
563
  {
551
564
  AVInputPtr *self; Data_Get_Struct( rbSelf, AVInputPtr, self );
data/ext/avinput.hh CHANGED
@@ -48,6 +48,7 @@ public:
48
48
  bool status(void) const;
49
49
  int width(void) const throw (Error);
50
50
  int height(void) const throw (Error);
51
+ bool hasVideo(void) const;
51
52
  bool hasAudio(void) const;
52
53
  AVRational videoTimeBase(void) throw (Error);
53
54
  AVRational audioTimeBase(void) throw (Error);
@@ -80,6 +81,7 @@ public:
80
81
  static VALUE wrapAudioStartTime( VALUE rbSelf );
81
82
  static VALUE wrapWidth( VALUE rbSelf );
82
83
  static VALUE wrapHeight( VALUE rbSelf );
84
+ static VALUE wrapHasVideo( VALUE rbSelf );
83
85
  static VALUE wrapHasAudio( VALUE rbSelf );
84
86
  static VALUE wrapSeek( VALUE rbSelf, VALUE rbPos );
85
87
  static VALUE wrapVideoPTS( VALUE rbSelf );
@@ -47,7 +47,9 @@ module Hornetseye
47
47
  frame
48
48
  end
49
49
 
50
- alias_method :read, :read_video
50
+ def read
51
+ has_video? ? read_video : read_audio
52
+ end
51
53
 
52
54
  def read_audio
53
55
  enqueue_frame while @audio.empty?
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hornetseye-ffmpeg
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 10
8
- - 0
9
- version: 0.10.0
4
+ prerelease:
5
+ version: 0.11.0
10
6
  platform: ruby
11
7
  authors:
12
8
  - Jan Wedekind
@@ -14,8 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2011-06-29 00:00:00 +01:00
18
- default_executable:
13
+ date: 2011-08-02 00:00:00 Z
19
14
  dependencies:
20
15
  - !ruby/object:Gem::Dependency
21
16
  name: malloc
@@ -25,9 +20,6 @@ dependencies:
25
20
  requirements:
26
21
  - - ~>
27
22
  - !ruby/object:Gem::Version
28
- segments:
29
- - 1
30
- - 2
31
23
  version: "1.2"
32
24
  type: :runtime
33
25
  version_requirements: *id001
@@ -39,9 +31,6 @@ dependencies:
39
31
  requirements:
40
32
  - - ~>
41
33
  - !ruby/object:Gem::Version
42
- segments:
43
- - 0
44
- - 23
45
34
  version: "0.23"
46
35
  type: :runtime
47
36
  version_requirements: *id002
@@ -53,9 +42,6 @@ dependencies:
53
42
  requirements:
54
43
  - - ~>
55
44
  - !ruby/object:Gem::Version
56
- segments:
57
- - 0
58
- - 11
59
45
  version: "0.11"
60
46
  type: :runtime
61
47
  version_requirements: *id003
@@ -67,8 +53,6 @@ dependencies:
67
53
  requirements:
68
54
  - - ">="
69
55
  - !ruby/object:Gem::Version
70
- segments:
71
- - 0
72
56
  version: "0"
73
57
  type: :development
74
58
  version_requirements: *id004
@@ -99,7 +83,6 @@ files:
99
83
  - ext/error.hh
100
84
  - ext/rubyinc.hh
101
85
  - ext/avoutput.hh
102
- has_rdoc: yard
103
86
  homepage: http://wedesoft.github.com/hornetseye-ffmpeg/
104
87
  licenses: []
105
88
 
@@ -114,21 +97,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
97
  requirements:
115
98
  - - ">="
116
99
  - !ruby/object:Gem::Version
117
- segments:
118
- - 0
119
100
  version: "0"
120
101
  required_rubygems_version: !ruby/object:Gem::Requirement
121
102
  none: false
122
103
  requirements:
123
104
  - - ">="
124
105
  - !ruby/object:Gem::Version
125
- segments:
126
- - 0
127
106
  version: "0"
128
107
  requirements: []
129
108
 
130
109
  rubyforge_project: hornetseye
131
- rubygems_version: 1.3.7
110
+ rubygems_version: 1.8.5
132
111
  signing_key:
133
112
  specification_version: 3
134
113
  summary: Read/write video frames using libffmpeg