No Video when playing a h264 network stream
Posted: 20 Aug 2007 14:29
I am using VLC086C on my Intel Pentium4 2.8G with 512M memory running Windows XP SP1.
I use VLC086c to encode a DVD MPEG2 movie with Video being encoded in 2048kbps H264 format and
Audio being encoded in 192kbps MP3 format and the stream is encapsulated in TS. File name of the
movie is "movie1(h264)"
I can play the MPEG TS file "movie1(h246)" using VLC086c without any problem.
Then I stream the file onto a multicast address using command line :
vlc -vvv "movie1(h264)" --sout udp:233.233.233.233 --ttl 12 --loop
then there is ts stream running on the ethernet port which is connected to an eth. switch.
I use another computer connected to the same eth swithc and
use VLC086c player to Open Network Stream 233.233.233.233 port 1234.
I can hear the sound but no video.
The following are the debug message :
=========================================
main debug: creating new input thread
main debug: waiting for thread completion
main debug: thread 3952 (input) created at priority 1 (input/input.c:265)
main debug: `udp://@233.233.233.233' gives access `udp' demux `' path `@233.233.233.233'
main debug: creating demux: access='udp' demux='' path='@233.233.233.233'
main debug: looking for access_demux module: 0 candidates
main warning: no access_demux module matched "udp"
main debug: creating access 'udp' path='@233.233.233.233'
main debug: looking for access2 module: 6 candidates
access_udp debug: opening server=:0 local=233.233.233.233:1234
main debug: net: connecting to '[]:0@[233.233.233.233]:1234'
main debug: looking for network module: 1 candidate
ipv6 debug: 233.233.233.233: Host or service not found
main debug: using network module "ipv6"
main debug: removing module "ipv6"
main debug: looking for network module: 1 candidate
ipv4 debug: resolving 233.233.233.233:1234...
ipv4 debug: resolving :0...
ipv4 debug: Winsock best interface is 65539
ipv4 debug: using interface 0x02fea8c0
ipv4 debug: IP_ADD_MEMBERSHIP multicast request
main debug: using network module "ipv4"
main debug: removing module "ipv4"
main debug: using access2 module "access_udp"
main debug: creating access filter 'timeshift'
main debug: looking for access_filter module: 1 candidate
main debug: thread 4180 (timeshift thread) created at priority 0 (timeshift.c:175)
main debug: using access_filter module "access_filter_timeshift"
main debug: pre buffering
access_udp debug: detected TS over raw UDP
main debug: received first data for our buffer
main debug: prebuffering done 32900 bytes in 0s - 292 kbytes/s
main debug: creating demux: access='udp' demux='' path='@233.233.233.233'
main debug: looking for demux2 module: 45 candidates
main debug: using demux2 module "ts"
main debug: looking for a subtitle file in C:\movie_tools\Videolan\vlc086c\
ts debug: DEMUX_SET_GROUP 0 00000000
main debug: `udp://@233.233.233.233' successfully opened
ts debug: pid[69] unknown
ts debug: pid[68] unknown
ts debug: PATCallBack called
ts debug: new PAT ts_id=20501 version=26 current_next=1
ts debug: * number=1 pid=66
ts debug: PMTCallBack called
ts debug: new PMT program number=1 version=9 pid_pcr=69
ts debug: * es pid=68 type=3 fcc=mpga
main debug: selecting program id=1
main debug: looking for decoder module: 28 candidates
main debug: using decoder module "mpeg_audio"
main debug: thread 4696 (decoder) created at priority 2 (input/decoder.c:159)
ts debug: * es pid=69 type=27 fcc=h264
main debug: looking for decoder module: 28 candidates
ffmpeg debug: libavcodec already initialized
ffmpeg debug: postprocessing disabled
ffmpeg debug: ffmpeg codec (h264) started
main debug: using decoder module "ffmpeg"
main debug: looking for packetizer module: 17 candidates
main debug: using packetizer module "packetizer_h264"
main debug: thread 4684 (decoder) created at priority 0 (input/decoder.c:159)
ts warning: first packet for pid=69 cc=0x7
ts warning: first packet for pid=68 cc=0xa
mpeg_audio debug: MPGA channels:2 samplerate:48000 bitrate:128
main debug: looking for audio output module: 3 candidates
aout_directx debug: OpenAudio
aout_directx debug: found device: Primary Sound Driver
aout_directx debug: found device: SoundMAX Digital Audio
aout_directx debug: device supports 2 channels
aout_directx debug: device supports 1 channel
aout_directx debug: creating DirectSoundThread
main debug: thread 4732 (DirectSound Notification Thread) created at priority 15 (directx.c:372)
aout_directx debug: DirectSoundThread ready
main debug: using audio output module "aout_directx"
main debug: output 's16l' 48000 Hz Stereo frame=1 samples/4 bytes
main debug: mixer 'fl32' 48000 Hz Stereo frame=1 samples/8 bytes
main debug: filter(s) 'fl32'->'s16l' 48000 Hz->48000 Hz Stereo->Stereo
main debug: looking for audio filter module: 24 candidates
main debug: using audio filter module "float32tos16"
main debug: found a filter for the whole conversion
main debug: looking for audio mixer module: 3 candidates
main debug: using audio mixer module "trivial_mixer"
main debug: input 'mpga' 48000 Hz Stereo frame=1152 samples/969 bytes
main debug: filter(s) 'mpga'->'fl32' 48000 Hz->48000 Hz Stereo->Stereo
main debug: looking for audio filter module: 24 candidates
main debug: using audio filter module "mpgatofixed32"
main debug: found a filter for the whole conversion
main debug: filter(s) 'fl32'->'fl32' 52800 Hz->48000 Hz Stereo->Stereo
main debug: looking for audio filter module: 24 candidates
main debug: using audio filter module "bandlimited_resampler"
main debug: found a filter for the whole conversion
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
mpgatofixed32 debug: libmad error: bad main_data_begin pointer
packetizer_h264 warning: waiting for SPS/PPS
mpgatofixed32 debug: libmad error: bad main_data_begin pointer
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
===========================================
the VLC player keep on waiting H264 SPS/PPS without showing any video.
The only way to solve this problem is to :
a . Stop the Video streaming server
b. Start the Video Streaming server from the beginning again.
then I can get both Audio and Video from the Client with the following debug messages :
================================================
ts debug: PATCallBack called
ts debug: new PAT ts_id=16540 version=19 current_next=1
ts debug: * number=1 pid=66
ts debug: PMTCallBack called
ts debug: new PMT program number=1 version=29 pid_pcr=68
ts debug: * es pid=68 type=3 fcc=mpga
ffmpeg debug: ffmpeg codec (h264) stopped
main debug: removing module "ffmpeg"
main debug: thread times: real 0m33.687500s, kernel 0m0.000000s, user 0m0.000000s
main debug: thread 4076 joined (input/decoder.c:191)
main debug: killing decoder fourcc `h264', 0 PES in FIFO
main debug: removing module "packetizer_h264"
main warning: computed PTS is out of range (7372923), clearing out
main warning: PTS is out of range (7343212), dropping buffer
main warning: output PTS is out of range (7405923), clearing out
main debug: audio output is starving (366116), playing silence
ts debug: PMTCallBack called
ts debug: new PMT program number=1 version=30 pid_pcr=69
ts debug: * es pid=68 type=3 fcc=mpga
ts debug: * es pid=69 type=27 fcc=h264
main debug: looking for decoder module: 28 candidates
ffmpeg debug: libavcodec already initialized
ffmpeg debug: postprocessing disabled
ffmpeg debug: ffmpeg codec (h264) started
main debug: using decoder module "ffmpeg"
main debug: looking for packetizer module: 17 candidates
main debug: using packetizer module "packetizer_h264"
main debug: thread 4052 (decoder) created at priority 0 (input/decoder.c:159)
packetizer_h264 debug: found NAL_SPS
packetizer_h264 debug: found NAL_PPS
ts warning: first packet for pid=68 cc=0xf
ts warning: discontinuity received 0xe instead of 0xa (pid=69)
ts warning: discontinuity received 0x4 instead of 0x1 (pid=68)
main warning: computed PTS is out of range (1234489), clearing out
main warning: PTS is out of range (1225234), dropping buffer
main warning: output PTS is out of range (1244489), clearing out
main warning: PTS is out of range (519834), dropping buffer
main warning: PTS is out of range (-4166), dropping buffer
main warning: PTS is out of range (-28166), dropping buffer
main warning: PTS is out of range (-36166), dropping buffer
mpgatofixed32 debug: libmad error: bad main_data_begin pointer
ffmpeg debug: concealing 1350 DC, 1350 AC, 1350 MV errors
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra mode at 28 2
(h264@00B26580)
ffmpeg warning: error while decoding MB 28 2, bytestream (10403)
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra mode at 42 2
(h264@00B26580)
ffmpeg warning: error while decoding MB 42 2, bytestream (9907)
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra mode at 5 7
(h264@00B26580)
ffmpeg warning: error while decoding MB 5 7, bytestream (3925)
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra4x4 mode -1 at 6 4
(h264@00B26580)
ffmpeg warning: error while decoding MB 6 4, bytestream (8895)
(h264@00B26580)
ffmpeg warning: left block unavailable for requested intra mode at 6 13
(h264@00B26580)
ffmpeg warning: left block unavailable for requested intra4x4 mode -1 at 2 3
(h264@00B26580)
ffmpeg warning: error while decoding MB 2 3, bytestream (9519)
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra mode at 41 3
(h264@00B26580)
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra mode at 35 2
(h264@00B26580)
ffmpeg warning: error while decoding MB 35 2, bytestream (10828)
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra mode at 13 6
ffmpeg warning: error while decoding MB 10 2, bytestream (3680)
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra mode at 4 2
(h264@00B26580)
ffmpeg warning: error while decoding MB 4 2, bytestream (9033)
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra mode at 42 4
(h264@00B26580)
ffmpeg warning: error while decoding MB 42 4, bytestream (4204)
(h264@00B26580)
)
ffmpeg warning: error while decoding MB 5 2, bytestream (3898)
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra mode at 43 2
(h264@00B26580)
ffmpeg warning: error while decoding MB 43 2, bytestream (5368)
(h264@00B26580)
main warning: late picture skipped (930834)
main warning: late picture skipped (897478)
main warning: late picture skipped (895112)
main warning: late picture skipped (861734)
main warning: late picture skipped (859378)
main warning: buffer is 40300 late, triggering upsampling
main warning: resampling stopped after 10860000 usec (drift: 1755)
========================================================
Can someone advice me how to fix this problem ?
Currently, I would like to use VLC to put some multicast streaming videos continuously onto the network using H264 video codec for testing.
thanks !
-richard-
I use VLC086c to encode a DVD MPEG2 movie with Video being encoded in 2048kbps H264 format and
Audio being encoded in 192kbps MP3 format and the stream is encapsulated in TS. File name of the
movie is "movie1(h264)"
I can play the MPEG TS file "movie1(h246)" using VLC086c without any problem.
Then I stream the file onto a multicast address using command line :
vlc -vvv "movie1(h264)" --sout udp:233.233.233.233 --ttl 12 --loop
then there is ts stream running on the ethernet port which is connected to an eth. switch.
I use another computer connected to the same eth swithc and
use VLC086c player to Open Network Stream 233.233.233.233 port 1234.
I can hear the sound but no video.
The following are the debug message :
=========================================
main debug: creating new input thread
main debug: waiting for thread completion
main debug: thread 3952 (input) created at priority 1 (input/input.c:265)
main debug: `udp://@233.233.233.233' gives access `udp' demux `' path `@233.233.233.233'
main debug: creating demux: access='udp' demux='' path='@233.233.233.233'
main debug: looking for access_demux module: 0 candidates
main warning: no access_demux module matched "udp"
main debug: creating access 'udp' path='@233.233.233.233'
main debug: looking for access2 module: 6 candidates
access_udp debug: opening server=:0 local=233.233.233.233:1234
main debug: net: connecting to '[]:0@[233.233.233.233]:1234'
main debug: looking for network module: 1 candidate
ipv6 debug: 233.233.233.233: Host or service not found
main debug: using network module "ipv6"
main debug: removing module "ipv6"
main debug: looking for network module: 1 candidate
ipv4 debug: resolving 233.233.233.233:1234...
ipv4 debug: resolving :0...
ipv4 debug: Winsock best interface is 65539
ipv4 debug: using interface 0x02fea8c0
ipv4 debug: IP_ADD_MEMBERSHIP multicast request
main debug: using network module "ipv4"
main debug: removing module "ipv4"
main debug: using access2 module "access_udp"
main debug: creating access filter 'timeshift'
main debug: looking for access_filter module: 1 candidate
main debug: thread 4180 (timeshift thread) created at priority 0 (timeshift.c:175)
main debug: using access_filter module "access_filter_timeshift"
main debug: pre buffering
access_udp debug: detected TS over raw UDP
main debug: received first data for our buffer
main debug: prebuffering done 32900 bytes in 0s - 292 kbytes/s
main debug: creating demux: access='udp' demux='' path='@233.233.233.233'
main debug: looking for demux2 module: 45 candidates
main debug: using demux2 module "ts"
main debug: looking for a subtitle file in C:\movie_tools\Videolan\vlc086c\
ts debug: DEMUX_SET_GROUP 0 00000000
main debug: `udp://@233.233.233.233' successfully opened
ts debug: pid[69] unknown
ts debug: pid[68] unknown
ts debug: PATCallBack called
ts debug: new PAT ts_id=20501 version=26 current_next=1
ts debug: * number=1 pid=66
ts debug: PMTCallBack called
ts debug: new PMT program number=1 version=9 pid_pcr=69
ts debug: * es pid=68 type=3 fcc=mpga
main debug: selecting program id=1
main debug: looking for decoder module: 28 candidates
main debug: using decoder module "mpeg_audio"
main debug: thread 4696 (decoder) created at priority 2 (input/decoder.c:159)
ts debug: * es pid=69 type=27 fcc=h264
main debug: looking for decoder module: 28 candidates
ffmpeg debug: libavcodec already initialized
ffmpeg debug: postprocessing disabled
ffmpeg debug: ffmpeg codec (h264) started
main debug: using decoder module "ffmpeg"
main debug: looking for packetizer module: 17 candidates
main debug: using packetizer module "packetizer_h264"
main debug: thread 4684 (decoder) created at priority 0 (input/decoder.c:159)
ts warning: first packet for pid=69 cc=0x7
ts warning: first packet for pid=68 cc=0xa
mpeg_audio debug: MPGA channels:2 samplerate:48000 bitrate:128
main debug: looking for audio output module: 3 candidates
aout_directx debug: OpenAudio
aout_directx debug: found device: Primary Sound Driver
aout_directx debug: found device: SoundMAX Digital Audio
aout_directx debug: device supports 2 channels
aout_directx debug: device supports 1 channel
aout_directx debug: creating DirectSoundThread
main debug: thread 4732 (DirectSound Notification Thread) created at priority 15 (directx.c:372)
aout_directx debug: DirectSoundThread ready
main debug: using audio output module "aout_directx"
main debug: output 's16l' 48000 Hz Stereo frame=1 samples/4 bytes
main debug: mixer 'fl32' 48000 Hz Stereo frame=1 samples/8 bytes
main debug: filter(s) 'fl32'->'s16l' 48000 Hz->48000 Hz Stereo->Stereo
main debug: looking for audio filter module: 24 candidates
main debug: using audio filter module "float32tos16"
main debug: found a filter for the whole conversion
main debug: looking for audio mixer module: 3 candidates
main debug: using audio mixer module "trivial_mixer"
main debug: input 'mpga' 48000 Hz Stereo frame=1152 samples/969 bytes
main debug: filter(s) 'mpga'->'fl32' 48000 Hz->48000 Hz Stereo->Stereo
main debug: looking for audio filter module: 24 candidates
main debug: using audio filter module "mpgatofixed32"
main debug: found a filter for the whole conversion
main debug: filter(s) 'fl32'->'fl32' 52800 Hz->48000 Hz Stereo->Stereo
main debug: looking for audio filter module: 24 candidates
main debug: using audio filter module "bandlimited_resampler"
main debug: found a filter for the whole conversion
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
mpgatofixed32 debug: libmad error: bad main_data_begin pointer
packetizer_h264 warning: waiting for SPS/PPS
mpgatofixed32 debug: libmad error: bad main_data_begin pointer
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
packetizer_h264 warning: waiting for SPS/PPS
===========================================
the VLC player keep on waiting H264 SPS/PPS without showing any video.
The only way to solve this problem is to :
a . Stop the Video streaming server
b. Start the Video Streaming server from the beginning again.
then I can get both Audio and Video from the Client with the following debug messages :
================================================
ts debug: PATCallBack called
ts debug: new PAT ts_id=16540 version=19 current_next=1
ts debug: * number=1 pid=66
ts debug: PMTCallBack called
ts debug: new PMT program number=1 version=29 pid_pcr=68
ts debug: * es pid=68 type=3 fcc=mpga
ffmpeg debug: ffmpeg codec (h264) stopped
main debug: removing module "ffmpeg"
main debug: thread times: real 0m33.687500s, kernel 0m0.000000s, user 0m0.000000s
main debug: thread 4076 joined (input/decoder.c:191)
main debug: killing decoder fourcc `h264', 0 PES in FIFO
main debug: removing module "packetizer_h264"
main warning: computed PTS is out of range (7372923), clearing out
main warning: PTS is out of range (7343212), dropping buffer
main warning: output PTS is out of range (7405923), clearing out
main debug: audio output is starving (366116), playing silence
ts debug: PMTCallBack called
ts debug: new PMT program number=1 version=30 pid_pcr=69
ts debug: * es pid=68 type=3 fcc=mpga
ts debug: * es pid=69 type=27 fcc=h264
main debug: looking for decoder module: 28 candidates
ffmpeg debug: libavcodec already initialized
ffmpeg debug: postprocessing disabled
ffmpeg debug: ffmpeg codec (h264) started
main debug: using decoder module "ffmpeg"
main debug: looking for packetizer module: 17 candidates
main debug: using packetizer module "packetizer_h264"
main debug: thread 4052 (decoder) created at priority 0 (input/decoder.c:159)
packetizer_h264 debug: found NAL_SPS
packetizer_h264 debug: found NAL_PPS
ts warning: first packet for pid=68 cc=0xf
ts warning: discontinuity received 0xe instead of 0xa (pid=69)
ts warning: discontinuity received 0x4 instead of 0x1 (pid=68)
main warning: computed PTS is out of range (1234489), clearing out
main warning: PTS is out of range (1225234), dropping buffer
main warning: output PTS is out of range (1244489), clearing out
main warning: PTS is out of range (519834), dropping buffer
main warning: PTS is out of range (-4166), dropping buffer
main warning: PTS is out of range (-28166), dropping buffer
main warning: PTS is out of range (-36166), dropping buffer
mpgatofixed32 debug: libmad error: bad main_data_begin pointer
ffmpeg debug: concealing 1350 DC, 1350 AC, 1350 MV errors
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra mode at 28 2
(h264@00B26580)
ffmpeg warning: error while decoding MB 28 2, bytestream (10403)
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra mode at 42 2
(h264@00B26580)
ffmpeg warning: error while decoding MB 42 2, bytestream (9907)
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra mode at 5 7
(h264@00B26580)
ffmpeg warning: error while decoding MB 5 7, bytestream (3925)
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra4x4 mode -1 at 6 4
(h264@00B26580)
ffmpeg warning: error while decoding MB 6 4, bytestream (8895)
(h264@00B26580)
ffmpeg warning: left block unavailable for requested intra mode at 6 13
(h264@00B26580)
ffmpeg warning: left block unavailable for requested intra4x4 mode -1 at 2 3
(h264@00B26580)
ffmpeg warning: error while decoding MB 2 3, bytestream (9519)
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra mode at 41 3
(h264@00B26580)
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra mode at 35 2
(h264@00B26580)
ffmpeg warning: error while decoding MB 35 2, bytestream (10828)
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra mode at 13 6
ffmpeg warning: error while decoding MB 10 2, bytestream (3680)
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra mode at 4 2
(h264@00B26580)
ffmpeg warning: error while decoding MB 4 2, bytestream (9033)
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra mode at 42 4
(h264@00B26580)
ffmpeg warning: error while decoding MB 42 4, bytestream (4204)
(h264@00B26580)
)
ffmpeg warning: error while decoding MB 5 2, bytestream (3898)
(h264@00B26580)
ffmpeg warning: top block unavailable for requested intra mode at 43 2
(h264@00B26580)
ffmpeg warning: error while decoding MB 43 2, bytestream (5368)
(h264@00B26580)
main warning: late picture skipped (930834)
main warning: late picture skipped (897478)
main warning: late picture skipped (895112)
main warning: late picture skipped (861734)
main warning: late picture skipped (859378)
main warning: buffer is 40300 late, triggering upsampling
main warning: resampling stopped after 10860000 usec (drift: 1755)
========================================================
Can someone advice me how to fix this problem ?
Currently, I would like to use VLC to put some multicast streaming videos continuously onto the network using H264 video codec for testing.
thanks !
-richard-