Being involved in sports for a good amount of time, I can't deny with either of the reasons. But I'll say, major reason is the lacking mindset. Believe me, not every player has got the guts to prepare "hard enough" to be of olympics' level. Of course, some players who are ready to sacrifice get crushed in the rush due to unavailability of facilities. But how much? I mean a bunchful of players out of fkin 1 billion + ? That's our support for sports. Community support is the biggest thing which stops talented players from going beyond certain level. I had one friend who was damn good at 100m sprint but just because his homely support was not good enough, he couldn't do anything.

About going to watch events, leave international level events, how many people even go to national level competitions, where no stupid reason of "Yindians don't win medal" can be made.
Lastly, money matters. I have seen how sports officials literally eat all the money which is funded by the govt. We get less funds, but if at all the "less funds" are utilised in a proper manner, days of single digit medals would be over, if not flurry of golds.